Подтвердить что ты не робот

Как реализована BigDecimal?

Я читал BigDecimal Class, но мне не удалось найти какую-либо информацию о том, как класс BigDecimal хранит значения в памяти компьютера.

Знаете ли вы какой-либо надежный источник, который может предоставить эту информацию?

4b9b3361

Ответ 1

Немасштабированное значение BigDecimal хранится в BigInteger. точность и масштаб сохраняются отдельно в целых полях:

BigInteger intVal
int scale
int precision

BigInteger хранит целое число как массив big-endian из 32-битных целых чисел, а знака отдельно как другое 32-битовое целое.

int signum
int[] mag

Но, как говорит Мухд, если число может поместиться в 64-битное целое число, то это используется вместо BigInteger.

Ответ 2

Значительные цифры номера хранятся в длинном, если количество цифр достаточно, чтобы соответствовать длине, иначе они сохраняются в BigInteger. Кроме того, BigDecimal имеет int примитивы для представления масштаба и точности, масштаб, указывающий количество значащих цифр справа от десятичной точки, а также точность, указывающую количество значащих цифр в числе.