提供一个浮点值37.35
我得到一串37.3
这是我的代码。
DecimalFormat format = new DecimalFormat(".0");
format.setRoundingMode(RoundingMode.HALF_UP);
return format.format(37.35f);
我希望收到一串37.4
。我究竟做错了什么?
我认为这可能是由于传递了一个浮点数,但是我无法选择收到的变量类型。即使实际代表float
was 37.3500221215051544
还应该四舍五入吗?
将此值格式化为字符串的全部目的是这样我可以将其传递给BigDecimal
并具有精确值,例如37.4
.
37.35 实际上更接近 37.3,然后更接近 37.4。您可以使用以下代码检查它:
System.out.println(37.35f-37.3f);
System.out.println(37.4f-37.35f);
在印刷品中0.049999237
and 0.05000305
.
With double
数据类型不同,结果也不同。
要解决这个问题,只需在您的数字中添加一点增量即可。例如,0.01。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)