四舍五入功能提供不同的价值

时间:2019-06-25 04:10:37

标签: java

我正在使用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 我已经经历了许多与四舍五入有关的链接。但仍不清楚。 请清楚地告诉我为什么两个数字都在发生这种情况?

1 个答案:

答案 0 :(得分:0)

浮点运算不精确。 在第一个赋值之后,rounded为0.145,乘以100的乘积将被截断,因此它将类似于14.499999999999,该数字将舍入为14,除以100,您将得到0.14。

更新:实际上,除以1000将被截断,因此结果将更像0.1449999999。