我試圖從double
在外殼上取下fractional
部分是整個使用:爪哇 - 三元操作怪異的行爲
(d % 1) == 0 ? d.intValue() : d
和遇到下列行爲,我不明白:
public static void main(String[] args) {
Double d = 5D;
System.out.println((d % 1) == 0); // true
System.out.println((d % 1) == 0 ? d.intValue() : "not whole"); // 5
System.out.println((d % 1) == 0 ? d.intValue() : d); // 5.0
}
正如您在第三行看到的那樣,即使滿足條件(d % 1) == 0
,操作員也會選擇else
的值 - 5.0
。
這是怎麼回事?
它在這兩種情況下都選擇'd.intValue()',它只是執行轉換以確保第二個和第三個參數具有相同的類型。 – Keppil
可能被認爲是http://stackoverflow.com/questions/8002603/why-does-the-ternary-operator-unexpectedly-cast-integers(及其所有重複項)的副本... – Marco13
@ Marco13,我是在發佈問題時不知道投射是問題。也許這是事後的重複.. – Daniel