为什么Float.valueOf("2.7") > 2.7给我真实?
public static void main(String[] args) {
System.out.println(Float.valueOf("2.7") > 2.7);
System.out.println(Float.valueOf("2.7") > 2.8);
System.out.println(Float.valueOf("2.7") > 2.6);
}
Run Code Online (Sandbox Code Playgroud)
版画
true
false
true.
Run Code Online (Sandbox Code Playgroud)
如果我这样做Float.valueOf("2.7") > Float.valueOf("2.7"),它会让我失意.
任何人都可以帮助我理解这种行为吗?
字面值2.7是double- 即最接近double2.7的值.
Float.valueOf("2.7")- 或者2.7f,等效地,是与float2.7 最接近的值.它们都不是2.7 - 在这种情况下,它们都略大于2.7.实际值是:
float: 2.7000000476837158203125
double: 2.70000000000000017763568394002504646778106689453125
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,float价值真的是比更大的double价值.
如果最接近的值低于 "理想" 值,您将看到相反的效果,其中float值将小于该double值,因为该double值将更接近"理想"值.你会看到2.8,例如,值是:
float: 2.7999999523162841796875
double: 2.79999999999999982236431605997495353221893310546875
Run Code Online (Sandbox Code Playgroud)
如果您使用Double.parseDouble而不是Float.parseFloat- 或者,如果您使比较对float文字起作用,您应该得到预期的结果:
System.out.println(Float.valueOf("2.7") > 2.7f);
System.out.println(Double.valueOf("2.7") > 2.7);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |