java - 划分 BigDecimals 时保留中间结果的最大精度

标签 java precision division bigdecimal

在返回最终结果之前,我使用 BigDecimal 进行了几次计算。我的计算包含两个部分。我知道我应该在调用 divide() 时定义缩放和舍入模式。但是,由于我使用的是货币,所以我想尽可能长时间地保持最大精度,并且只将我的最终结果四舍五入到小数点后两位。

我应该对中间结果应用什么缩放和舍入模式以获得最大精度?

最佳答案

假设,您执行类似 (a/b)/c 的操作。

我不会先计算(a/b)。我宁愿将其重组为

一个/(b * c)

它不仅不需要中间舍入,而且会更加优化。

(a/b)/c = a/(b * c)

证明:

(a/b)/c = (a * b^-1) * c^-1 = a * (b^-1 * c^-1) = a * 1/(b * c) = a/(b * c)

关于java - 划分 BigDecimals 时保留中间结果的最大精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31724405/

相关文章:

python - 防止Python浮点除法中的下溢

c - 将 '/' 与 long double 一起使用?

java - Java 中的可视化继承

java - 在数组中搜索特定字符串

java - 其他对象获取指向单例的指针的有效方法是什么?

java - InputStream 的 "close()"方法抛出 NullPointerException

assembly - Intel x86_64 程序集比较带符号的 double float

java整数舍入(除法相关)

c - 为什么这个除法结果为零?

c - 嵌入式应用中浮点除零的高效校验