मैं मामले में एक double
से fractional
हिस्सा हटाने की कोशिश कर रहा था इसे का उपयोग पूरे है:जावा त्रिगुट ऑपरेटर अजीब व्यवहार
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 ? d.intValue() : d
और निम्न व्यवहार जो मुझे समझ नहीं आता का सामना करना पड़ा
जैसा कि आप तीसरी पंक्ति पर देख सकते हैं, ऑपरेटर else
मान - 5.0
चुनता है भले ही (d % 1) == 0
स्थिति पूरी हो।
यहां क्या हो रहा है?
यह चुनता है 'd.intValue()' दोनों ही मामलों में, यह सिर्फ रूपांतरण यकीन है कि दूसरे और तीसरे तर्क एक ही प्रकार है बनाने के लिए करता है। – Keppil
शायद http://stackoverflow.com/questions/8002603/why-does-the-ternary-operator-unexpectedly-cast-integers (और इसके सभी डुप्लिकेट) के डुप्लिकेट के रूप में माना जा सकता है ... – Marco13
@ मार्को 13, मैं था इस बात को ध्यान में रखते हुए कि सवाल पोस्ट करते समय कास्टिंग समस्या थी। हो सकता है कि यह हिंडसाइट द्वारा डुप्लिकेट हो .. – Daniel