我对浮点数的行为感到困惑,因为我看到了下面代码片段的结果。
float var1 = 5.4f;
float var2 = 5.5f;
if(var1 == 5.4)
System.out.println("Matched");
else
System.out.println("Oops!!");
if(var2 == 5.5)
System.out.println("Matched");
else
System.out.println("Oops!!");
输出:
Oops!!
Matched
这是因为十进制数在二进制格式中可能无法准确表示吗? 还是因为我将一个float类型的变量与一个double类型的变量进行比较时精度不够?如果是这样,为什么对于下一个变量它可以正常工作呢?
BigDecimal
... - vikingsteve