Арифметические операции над очень, очень длинными десятичными знаками - PullRequest
0 голосов
/ 05 мая 2009

Мне всегда было любопытно: как я могу выполнять арифметические операции с очень длинными десятичными знаками - например, вычислять число Пи до 3000-го десятичного знака (особенно на языке императивов)?

Ответы [ 3 ]

3 голосов
/ 05 мая 2009

Использовать язык или библиотеку, которая поддерживает числа произвольной точности ...?

В Python int автоматически переводятся в длинные значения произвольного размера. Вы можете использовать второе значение для отслеживания того, на сколько десятичных знаков сместиться, чтобы получить своего рода плавающую точку произвольной точности.

В Java вы можете использовать класс BigDecimal , который представляет "неизменяемые десятичные числа со знаками произвольной точности".

Я уверен, что есть другие примеры на других языках.

3 голосов
/ 05 мая 2009

Для языков, которые не поддерживают вычисления на больших частотах, часто существуют библиотеки. Например, вы можете взглянуть на GMP . Документы дадут вам указания на некоторые типичные алгоритмические подходы.

Быстрая арифметика Бигнума - сложная задача, поэтому существуют довольно сложные алгоритмы ...

0 голосов
/ 05 мая 2009

Вы должны либо работать с данными на уровне цифр (например, вычислять каждую цифру постепенно или детерминистически), либо определять новые структуры данных, которые имеют достаточное количество битов для обеспечения достаточной точности.

...