【发布时间】:2018-06-25 12:04:51
【问题描述】:
我在编码中遇到了一个相当不寻常的场景。我开发了这个应用程序,它已经使用了 6 个月,没有出现任何错误。
为了简化我的问题。我正在使用 decimalFormat 来对数字进行四舍五入,并确保它们保留到小数点后 2 位,并且效果很好。
但是,出现了一个问题,它被发回给我,据说除了这个特定的情况外,其他所有情况都有效,而且似乎特别是数字 4?
案例:
总计 = 44.75 平均值 = 4.475 MBW(2 个小数位)= 4.47 不是 4.48
这让我想知道 DecimalFormat 在四舍五入时是否总是正确的?奇怪的是,当它是 1.475 时,它会四舍五入到 0.48,除了 4 之外的所有数字??
有人有什么想法吗?
Java 示例:
final DecimalFormat df = new DecimalFormat("#0.00");
weight2 = 4.475
MBW = df.format(weight2);
上面的结果仍然是 4.47.. 任何正常的四舍五入都应该是 4.48? 这适用于任何其他整数,例如 1.475 是 1.48,2.275 是 2.48...为什么整数 4 不起作用???
【问题讨论】:
-
是的,请发布代码。我很难相信 1.475 有效,但 4.475 无效。
-
@jingx 我已经添加了大部分课程,因为我不确定你需要什么......这可能很难理解,但基本上有类似的输入,然后总计是 calc,然后是平均值,然后是平均值应四舍五入到小数点后 2 位并适当四舍五入。我希望你能看到我看不到的东西!
-
你能把它减少到一行代码,比如
df.format(4.475)会输出4.47,但df.format(1.475)会输出1.48?不是想给您带来麻烦,但它是故障排除和发布寻求帮助的有效方法,因为如果在您的还原过程中行为丢失,则问题不在DecimalFormat。 -
问题似乎是整数4这很奇怪@jingx
-
@Henry 我看不出这是怎么重复的???
标签: java android rounding decimalformat