打印浮动时丢失精度

时间:2013-07-09 05:50:37

标签: java string floating-point-precision

请查看以下代码:

    float num =  72000000.69f; 
    System.out.println(String.format("%.2f", num));

输出:72000000.00

我失去了精确度。我试过将float转换为BigDecimal然后打印值,但它没有帮助。

任何保持精度的方法?

4 个答案:

答案 0 :(得分:5)

浮点数有七位数的精度。你有七位数。

如果您想要更高的精度,请改用双精度。

答案 1 :(得分:2)

BigDecimal num = new BigDecimal("72000000.69");
System.out.println(num);

输出:

72000000.69

答案 2 :(得分:0)

使用 BigDecimal ,浮动类型不会按您的想法存储所有数字

答案 3 :(得分:0)

试试这个测试

    System.out.println(72000000.69f == 72000000f);

打印

true

这意味着.69因为漂浮的低精度而被简单地切断,它根本就不存在,你无法以任何方式恢复它。