我使用float来显示十进制数字,但有时它不会显示正确的结果。
例如,对于6.2 / 1000,结果为0.0061999997。
我知道为什么会这样,但我想知道有没有办法显示正确的结果,在这种情况下,0.0062?
编辑: How to round a number to n decimal places in Java没有回答我的问题,为什么你在其他地方已经回答了我的问题?
我写的数字只是一个例子。在app中,用户可以输入任意数字并使用任何其他数字除以/乘数,因此结果可能没有任何小数点,也许它将有4位小数,也许它将有7位小数,...
答案 0 :(得分:7)
首先,您需要了解这不仅仅是 display 问题 - 如果您想避免显示不正确的值,那么有正确的值会有所帮助从...开始。
您应该使用BigDecimal
代替float
。它将值存储为由10 {sup> exp 因子缩放的整数,而不是double
和float
使用的2 exp 。
如果BigDecimal.toString
没有按照您希望的方式格式化结果,请使用DecimalFormat
来执行格式化。
答案 1 :(得分:0)
格式化小数位用法:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(decimalPlace);
String formatedValue = df.format(value);
希望这会解决您的疑问。