Как реализована BigDecimal?
Я читал BigDecimal Class, но мне не удалось найти какую-либо информацию о том, как класс BigDecimal
хранит значения в памяти компьютера.
Знаете ли вы какой-либо надежный источник, который может предоставить эту информацию?
Ответы
Ответ 1
Немасштабированное значение BigDecimal хранится в BigInteger. точность и масштаб сохраняются отдельно в целых полях:
BigInteger intVal
int scale
int precision
BigInteger хранит целое число как массив big-endian из 32-битных целых чисел, а знака отдельно как другое 32-битовое целое.
int signum
int[] mag
Но, как говорит Мухд, если число может поместиться в 64-битное целое число, то это используется вместо BigInteger.
Ответ 2
Значительные цифры номера хранятся в длинном, если количество цифр достаточно, чтобы соответствовать длине, иначе они сохраняются в BigInteger. Кроме того, BigDecimal имеет int примитивы для представления масштаба и точности, масштаб, указывающий количество значащих цифр справа от десятичной точки, а также точность, указывающую количество значащих цифр в числе.