DecimalFormat四舍五入的奇数结果

时间:2017-02-23 18:21:25

标签: java floating-point floating-point-conversion

提供浮点值37.35我收到一串37.3

这是我的代码。

DecimalFormat format = new DecimalFormat(".0");
format.setRoundingMode(RoundingMode.HALF_UP);
return format.format(37.35f);

我希望收到一串37.4。我做错了什么?

我认为可能是因为传递了一个浮点数但是我不能选择我收到的变量类型。即使float的实际代表是37.3500221215051544,它仍然应该四舍五入?

将此值格式化为字符串的重点是,我可以将其传递给BigDecimal,并具有37.4等确切值。

1 个答案:

答案 0 :(得分:1)

37.35实际上接近37.3然后接近37.4。您可以按照以下代码进行检查:

System.out.println(37.35f-37.3f);
System.out.println(37.4f-37.35f);
打印件0.0499992370.05000305中的

使用double数据类型,结果会有所不同。

要解决此问题,只需在数字中添加一点delta即可。例如,0.01。