为什么在划分BigInteger时减去比例并在乘法时加上?

时间:2014-01-26 20:48:14

标签: java division bigdecimal bignum

我有数据,我正试图准确,精确地操纵不断增加的分母。

请假设分子总是有小数。

我在docs中看到divide(BigDecimal divisor)实际上会缩小看起来很奇怪的比例因为我理解“比例”的使用,小数点后的位数,它应该在分割时增加

我还在docs中看到multiply(BigDecimal multiplicand)增加了比例。根据我对比例的理解,这也没有意义,因为两个乘法数字需要超过小数点的数字的可能性下降。

文档中存在这些拼写错误吗?

如果没有,我对比例的理解不正确吗?

如果没有,如何通过增加小数点后位数的不断增加的分母来保持精度?

1 个答案:

答案 0 :(得分:2)

这实际上只是scientific notation。正如文档中所述,BigDecimal的价值是:

unscaledValue × 10^(-scale)

因此,将两个BigDecimal相乘可相当于将unscaledValue乘以scale s:

   a * b
== (uA * 10^-sA) * (uB * 10^-sB)
== (uA * uB) * 10^-(sA + sB)