BigDecimal是如何实现的?

时间:2012-05-18 15:15:28

标签: java bigdecimal

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

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

2 个答案:

答案 0 :(得分:17)

BigDecimal的未缩放值存储在BigInteger中。 precision and scale分别存储在整数字段中:

BigInteger intVal
int scale
int precision

BigInteger将整数存储为32位整数的big-endian数组,并将该符号另存为另一个32位整数。

int signum
int[] mag

但正如Muhd所说,如果数字可以适合64位整数,则使用它来代替BigInteger。

答案 1 :(得分:6)

如果数字的位数足以适合long,则数字的有效数字存储在long中,否则它们存储在BigInteger中。此外,BigDecimal有int基元来表示scale and precision,比例表示小数点右边的有效数字,精度表示数字中有效数字的总数。