BigDecimal是如何实现的?

Jan*_*jan 16 java bigdecimal

我正在阅读BigDecimal Class但我无法找到BigDecimal类如何将值存储在计算机内存中的任何信息.

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

Gre*_*owe 18

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

BigInteger intVal
int scale
int precision
Run Code Online (Sandbox Code Playgroud)

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

int signum
int[] mag
Run Code Online (Sandbox Code Playgroud)

但正如Muhd所说,如果数字可以适合64位整数,则使用它而不是BigInteger.


Muh*_*uhd 7

如果数字的位数足以适合long,则数字的有效数字存储在long中,否则它们存储在BigInteger中.此外,BigDecimal具有表示比例和精度的 int基元,表示小数点右侧有效位数的标度,以及表示数字中有效位数总数的精度.