请看下面的代码:
float num = 72000000.69f;
System.out.println(String.format("%.2f", num));
输出:72000000.00
我正在失去精度。我尝试将浮点数转换为 BigDecimal,然后打印这些值,但这没有帮助。
有什么办法可以保持精度?
请看下面的代码:
float num = 72000000.69f;
System.out.println(String.format("%.2f", num));
输出:72000000.00
我正在失去精度。我尝试将浮点数转换为 BigDecimal,然后打印这些值,但这没有帮助。
有什么办法可以保持精度?
浮点数具有七位精度。你得到了你的七位数。
如果您想要更高的精度,请改用双精度。
BigDecimal num = new BigDecimal("72000000.69");
System.out.println(num);
输出:
72000000.69
使用BigDecimal,浮动类型不会像你想的那样存储你所有的数字
试试这个测试
System.out.println(72000000.69f == 72000000f);
它打印
true
这意味着 .69 只是由于 float 的低精度而被切断,它根本不存在,您无法以任何方式恢复它。