我正在使用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
我已经经历了许多与四舍五入有关的链接。但仍不清楚。
请清楚地告诉我为什么两个数字都在发生这种情况?
答案 0 :(得分:0)
浮点运算不精确。
在第一个赋值之后,rounded
为0.145,乘以100的乘积将被截断,因此它将类似于14.499999999999,该数字将舍入为14,除以100,您将得到0.14。
更新:实际上,除以1000将被截断,因此结果将更像0.1449999999。