我正在使用 math.round()
进行四舍五入。这是代码:
double value=0.14499999970197677;
double rounded;
rounded=Math.round( value* 1000.0) / 1000.0;
rounded=Math.round( rounded* 100.0) / 100.0;
System.out.println("Final value :" + rounded);
我的期望是它应该返回 0.15
但它正在返回 0.14
另外,如果值为 0.13499999970197677
,那么它返回 0.14
,为什么不是 0.13
我已经浏览了许多与四舍五入相关的链接。但仍不清楚。
请清楚地告诉我为什么这两个数字都会发生这种情况?
最佳答案
浮点运算并不精确。
第一次赋值后,rounded
为 0.145,乘以 100 的结果将被截断,因此它将类似于 14.499999999999,四舍五入为 14,除以 100,如您所见,得到 0.14。
更新:实际上,除以 1000 已经被截断,因此结果将更像 0.1449999999。
关于java - 舍入函数提供不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746725/