我有一些带有算术表达式的业务逻辑,它们的结果如下
(10.0 * 20.58)/1.0=205.7999..98
(6.0 * 37.9)/1.0=227.3999..98
(5.0 * 50.0)/1.0=250.0
(10.0 * 37.9)/1.0=379.0
但预期的结果是
(10.0 * 20.58)/1.0=205.8
(6.0 * 37.9)/1.0=227.4
(5.0 * 50.0)/1.0=250.0
(10.0 * 37.9)/1.0=379.0
我不清楚为什么我们会得到 .999..98 小数部分?因此,我的等式比较失败了,因此业务逻辑也失败了。对于我们正在使用的少数情况
amt = (double)Math.round(orderAmt*100000)/100000;
但这不可能在我们有双重算术表达式的每个地方都做同样的事情。
我想知道为什么我们随机得到这样的结果,是否有可能将结果四舍五入到小数点后 5 位而不是四舍五入?