1

请看下面的代码:

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

输出:72000000.00

我正在失去精度。我尝试将浮点数转换为 BigDecimal,然后打印这些值,但这没有帮助。

有什么办法可以保持精度?

4

4 回答 4

5

浮点数具有七位精度。你得到了你的七位数。

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

于 2013-07-09T05:52:45.363 回答
2
BigDecimal num = new BigDecimal("72000000.69");
System.out.println(num);

输出:

72000000.69
于 2013-07-09T05:53:40.163 回答
0

使用BigDecimal,浮动类型不会像你想的那样存储你所有的数字

于 2013-07-09T05:53:56.663 回答
0

试试这个测试

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

它打印

true

这意味着 .69 只是由于 float 的低精度而被切断,它根本不存在,您无法以任何方式恢复它。

于 2013-07-09T06:11:20.227 回答