我有兩個變量y和z,類型爲double
和long
。我的問題是相等運算符對它們返回true,即使它們具有不同的值,如下面的代碼片段中所示。平等運算符對不等值返回true
public class Test {
public static void main(String[] args) throws Exception {
double y = (double) Long.MAX_VALUE;
System.out.println(y);//9.223372036854776E18
long z = Long.MAX_VALUE - 1;
System.out.println(z);//9223372036854775806
System.out.println(y == z);//=============true
}
}
我的查詢是如果Z具有小於Y一個值,爲什麼ÿ== z爲即將實現。
有人可以解釋這種行爲。
嘗試打印這些價值觀? – GhostCat
是的,它們都不相同 –
任何大於'2^53 - 1'的長整數值都不能完全表示爲雙精度值。 –