java - 舍入函数提供不同的值

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

最佳答案

浮点运算并不精确。 第一次赋值后,rounded 为 0.145,乘以 100 的结果将被截断,因此它将类似于 14.499999999999,四舍五入为 14,除以 100,如您所见,得到 0.14。

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

关于java - 舍入函数提供不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746725/

相关文章:

java - 在selenium中使用javascript监听AJAX请求

java - Spring Web 应用程序显示 HTTP 状态 404 -

java - 不修改对象的 ConcurrentModificationException

Java new Date 带有日期格式的时间戳

java - 依赖maven中的模块

java - 使用 log4j 时 java applet 中的重复行

java.net.ConnectException : failed to connect to localhost/127. 0.0.1(端口 9090):连接失败:ECONNREFUSED(连接被拒绝)

java - 根据两列选择随机平衡记录

java - Struts2 - 正确地将 enye 字符从 jsp 传递到 struts 2 Action 类

java - 无需终端操作将Java流拆分为两个惰性流