浮点数转换为int以获取大值
我只有一个基本问题,为什么以下陈述之间存在差异?
System.out.printf("%.2f n", 55050000.41f);
System.out.printf("%.2f n", 50.41f);
输出
55050000.00
50.41
第一条语句删除了一个十进制值,为什么不删除第二条语句?
回答
默认情况下,Java 中的浮点数转换为 64 位双精度数,但由于您使用的是 f 后缀,因此该数字将被解释为 32 位浮点数。
这个数字太大了,在不损失精度的情况下不适合 32 位,而 55050000 是最接近的数字。
你可以在这里玩花车。如果您更改最后一位,您可以看到数字增加了 4。
除非空间有限,否则您可能不想使用 f 后缀。