BigDecimal是如何实现的?

2022-09-01 19:09:01

我正在阅读BigDecimal Class,但我找不到任何关于class如何在计算机内存中存储值的信息。BigDecimal

您知道任何可以提供此信息的可靠来源吗?


答案 1

BigDecimal 的未缩放值存储在 BigInteger 中精度和小数位数分别存储在整数字段中:

BigInteger intVal
int scale
int precision

BigInteger 将整数存储为 32 位整数的大端数组,并将符号单独存储为另一个 32 位整数。

int signum
int[] mag

但正如Muhd所说,如果这个数字可以容纳一个64位整数,那么就用这个数字代替BigInteger。


答案 2

如果数字数足以容纳长数字,则数字的有效位数将存储在长数字中,否则它们将存储在 BigInteger 中。此外,BigDecimal 具有 int 基元来表示小数位数和精度,小数位数表示小数点右边的有效位数,精度表示数字中总有效位数。


推荐