Арифметические операции над очень, очень длинными десятичными знаками

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

Вопрос

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

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

Решение

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

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

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

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

Другие советы

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

Сделать арифметику Бигнума быстрой очень сложно, поэтому есть несколько довольно запутанных алгоритмов ...

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

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