提供浮点值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
等确切值。
答案 0 :(得分:1)
System.out.println(37.35f-37.3f);
System.out.println(37.4f-37.35f);
打印件0.049999237
和0.05000305
中的。
使用double
数据类型,结果会有所不同。
要解决此问题,只需在数字中添加一点delta即可。例如,0.01。