Каково максимальное количество цифр, которое мы можем получить после десятичной точки значения BigDecimal
в Java?
Максимальное количество цифр после десятичной точки с помощью BigDecimal
Ответ 1
Он (почти) неограничен. Вы можете хранить примерно 2 миллиарда цифр после десятичной точки, если масштаб установлен на максимальное значение целого числа, хотя вы можете не использовать память, если попытаетесь это сделать. Если вам нужно хранить столько цифр, что предел является проблемой, вам, вероятно, потребуется переосмыслить дизайн вашей программы.
Смотрите документацию BigDecimal:
Непрерывные знаковые числа с произвольной точностью. BigDecimal состоит из произвольного значения целочисленного целочисленного значения точности и 32-разрядной целочисленной шкалы. Если ноль или положительный, масштаб - это число цифр справа от десятичной точки. Если отрицательное значение, немасштабированное значение числа умножается на десять на силу отрицания шкалы. Следовательно, значение числа, представленного BigDecimal (немасштабированоValue × 10 -scale).
Ответ 2
В соответствии с тем, что упоминается в BigDecimal Java 2 Platform Standard Ed. 5.0:
Непрерывная, произвольная точность десятичные числа. BigDecimal состоит произвольного прецизионного целого немасштабированное значение и 32-битное целое число масштаб. Если ноль или положительный, шкала - количество цифр справа десятичной точки. Если это отрицательно, немасштабированное значение числа умноженное на десять на мощность отрицание шкалы. Значение число, представленное BigDecimal поэтому (unscaledValue × 10 ^ (- масштаб)).
Согласно Java-реализация 32-битных целых чисел:
int: Тип данных int - это 32-разрядный подписали два целых числа. Это имеет минимальное значение -2,147,483,648 и максимальное значение 2,147,483,647 (Включительно). Для интегральных значений это тип данных, как правило, по умолчанию если есть причина (например, выше), чтобы выбрать что-то другое. Этот тип данных, скорее всего, будет достаточно большой для чисел, программа будет использовать, но если вам понадобится более широкий диапазон значений, используйте длинные вместо этого.
Это означает, что для нулевых или позитивных чисел шкалы у вас есть 2 147 483 647 цифр справа от десятичной точки. Для отрицательных чисел шкалы у вас есть unscaledValue сдвинуто вправо от десятичной точки на 2 147 483 648 цифр.