【发布时间】:2021-12-12 06:55:00
【问题描述】:
我有一个计算 17780.00 x 115.00 的方法,结果应该是 2044700.00,但是,该方法计算它为 2045000.00(似乎是整数四舍五入)。此方法还将处理带小数的数字,例如。 0.97 x 0.5。代码如下所示:
public Double multiplyNumber(Double d1, Double d2) {
return new BigDecimal(d1).multiply(
new BigDecimal(d2),
new MathContext(4, RoundingMode.HALF_UP)).doubleValue();
}
请告知如何使代码计算出正确的结果。谢谢!
【问题讨论】:
-
查看
MathContext的Javadoc。你认为4是什么意思? -
这能回答你的问题吗? How to convert BigDecimal to Double in Java?
-
@tgdavies 是的,我认为这意味着小数位。如何使它适用于小数位和整数。
-
我不确定您想要实现什么。
d1 * d2在什么方面没有做你想做的事? -
@tgdavies 是不是只做 d1*d2 会产生像 9.99999999999 这样的结果?
标签: java rounding bigdecimal