Сведения о вопросе

FELL

04:42, 27th August, 2020

Теги

Наиболее эффективная реализация класса большого числа

Просмотров: 502   Ответов: 5

При выполнении вычислений на очень больших числах, где целочисленные типы данных, такие как double или int64, не подходят, может потребоваться отдельный класс для обработки таких больших чисел.

Кто-нибудь хочет предложить эффективный алгоритм, как лучше всего это сделать?



  Сведения об ответе

SKY

23:27, 9th August, 2020

Есть 2 варианта решения вашей проблемы:

  • Простой способ: Используйте внешнюю библиотеку, такую как библиотека GNU MP Bignum , и забудьте о деталях реализации.

  • Трудный путь: создайте свой собственный класс / структуру, содержащую несколько типов данных более высокого порядка, таких как переменные double или int64, и определите основные математические операции для них с помощью перегрузки операторов (в C++) или с помощью методов add, subtract, multiply, shift и т. д. (на JAVA и других OO языках).

Дайте мне знать, если вам понадобится дополнительная помощь. Я уже делал это пару раз в прошлом.


  Сведения об ответе

lesha

14:04, 26th August, 2020

В C# 4.0 используйте тип BigInteger


  Сведения об ответе

Chhiki

00:40, 18th August, 2020

Использование встроенных функций языка работает на меня.

Java имеет BigInteger и BigDecimal, а Python автоматически переключается на объект, подобный Java, если число выходит из диапазона integer или еще чего-нибудь.

Что же касается других языков, то я понятия не имею.

Я ненавижу заново изобретать колесо.


  Сведения об ответе

SKY

20:34, 14th August, 2020

Вы спрашиваете об арифметике произвольной точности, о предмете, по которому написаны книги . Если вам просто нужна простая и достаточно эффективная библиотека BigNum для C#,, вы можете проверить IntX .


  Сведения об ответе

davran

05:14, 19th August, 2020

Создание собственной библиотеки BigNum-это сложно, поэтому я бы сказал, как jjnguy. Используйте в качестве библиотек все, что предлагает ваш язык.

В поле .net укажите VisualJ dll, поскольку они содержат классы BigInteger и BigDecimal. Однако вы должны знать о некоторых ограничениях этих библиотек, таких как отсутствие метода квадратного корня, например.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться