gpt4 book ai didi

java - 为什么除 BigInteger 时减去 scale,乘法时加 scale?

转载 作者:行者123 更新时间:2023-11-30 09:12:43 25 4
gpt4 key购买 nike

我有一些数据,我正试图通过不断增加的分母来准确和精确地处理这些数据。

请假设分子总是有小数。

我在 docs 中看到divide(BigDecimal divisor) 实际上会减小比例,这看起来很奇怪,因为据我了解“比例”的用法,即小数点后的位数,它应该在除法时增加。

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

文档中是否有这些拼写错误?

如果不是,是不是我对比例的理解不正确?

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

最佳答案

这实际上只是 scientific notation .正如文档中所说,BigDecimal 的值是:

unscaledValue × 10^(-scale)

因此,将两个 BigDecimal 相乘相当于将它们的 unscaledValue 相乘并加上它们的 scale:

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

关于java - 为什么除 BigInteger 时减去 scale,乘法时加 scale?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21368986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com