Эмуляция численных операций в программном обеспечении

StackOverflow https://stackoverflow.com/questions/4055366

  •  27-09-2019
  •  | 
  •  

Вопрос

Численные операции, которые мы делаем в наших программах, ограничены количеством байтов, которые языки указывают на данный DataType (или, возможно, аппаратные средства). Скажем, я могу использовать целое число для расчетов на моей зарплате (даже «короткая» более чем достаточно на год зарабатывания !!!;)) Но не может сделать то же самое с Биллом Гейтс богатством. Итак, мы идем на такие вещи, как долго и вещи. Но мы не все еще на милость ряда битов, которые нам даны.

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

Может быть, я могу использовать его, чтобы рассчитать точность Pi до 1000 цифр за месяцы или простые простуды Mersenne в течение нескольких лет и взять на себя дому 100 долларов США;)

Так что теперь мой вопрос, 1) Есть ли уже какие-либо такие библиотеки, чтобы сделать этот вид вещей там (в C / C ++). 2) Если я пойду о реализации одного, у вас есть какие-либо предложения для меня? (+, -, *, /,%, <<, >> Операции должны быть достаточно, чтобы я думаю)


PS:

  1. Я C / C ++ программист.

  2. И это ограничение начало беспокоить меня из моих учебных дней.

Это было полезно?

Решение

Такие типы данных известны как произвольные точные числа. В Java есть классы BigDecimal и BigInteger Что обрабатывает основные операции (+, -, *, /) на цифровом уровне. У них нет «ограниченного размера». Они на самом деле не такие медленные и используются во многих реальных доменов.

C / C ++ У вас нет встроенного, но там много библиотек. Смотрите список здесь:http://en.wikipedia.org/wiki/arbitrary-precision_Ariithmetics#Libraries.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top