हाँ, नकारात्मक संख्या के लिए, यह विपरीत तरह से काम करता है।
उदाहरण (मोनो के सी # इंटरैक्टिव खोल csharp
उपयोग करते हुए):
csharp> Math.Floor(-12.0d)
-12
csharp> Math.Floor(-12.5d)
-13
csharp> (int) -12.5
-12
(के लिए दोनों जावा/सी # एक ही) और मैं सबसे अधिक भाषाओं वैसे भी लगता है।
एक पूर्णांक के लिए एक फ़्लोटिंग-पॉइंट नंबर कास्टिंग, पूर्णांक को बनाए रखने वाले दशमलव भाग को फेंककर किया जाता है। -12.5
का पूर्णांक भाग 12
है। इस प्रकार नकारात्मक संख्या Math.Ceil
होती है यदि int
में परिवर्तित हो जाती है।
@Matthew का तर्क है इसके अलावा के रूप में, एक float
या double
तरह 1.023e23
(एवोगेड्रो के निरंतर) संख्या तक पहुँच सकते हैं। बस क्योंकि mantisse अब अल्पविराम के बाद अंकों का प्रतिनिधित्व नहीं कर सकता है। संख्या वैसे भी एक पूर्णांक माना जाता है, लेकिन int
द्वारा इसका प्रतिनिधित्व नहीं किया जा सकता है। Math.floor
ऑपरेशन करके, कुछ भी नहीं होता है, लेकिन मान अभी भी बनाए रखा जाता है।
उदाहरण:
csharp> double ac = 1.023e23;
csharp> Math.Floor(ac);
1.023E+23
csharp> (int) ac;
0
नोट: एक int
करने के लिए रूपांतरण अतिप्रवाह में परिणाम सकता है हालांकि यह अब तक प्राप्त किए गए लग सकता है, लेकिन फिर भी अर्थ विज्ञान में एक स्पष्ट अंतर इस प्रकार है। एक अंतर जो वैसे भी त्रुटियों का कारण बनता है।
इसके अलावा, यह works differentlyके लिए अनंत संख्या और NaN:
System.out.println(Math.floor(Double.POSITIVE_INFINITY)); // Prints Infinity
System.out.println((int)Double.POSITIVE_INFINITY); // Prints 2147483647
System.out.println(Math.floor(Double.NaN)); // Prints NaN
System.out.println((int)Double.NaN); // Prints 0
लेकिन मैं हमेशा उन्हें फिर भी प्रयोग करेंगे। कास्टिंग चीजों को और अधिक पढ़ने योग्य बनाता है। राउंड अप अप/डाउन/ऑफ कास्ट का कुछ प्रकार (दुष्प्रभाव) है। Math.Ceil/Floor/Round
का उपयोग करके यह स्पष्ट है कि आपका क्या मतलब है।
कभी-कभी एक पूर्णांक में एक कास्ट वास्तव में एक मंजिल/छत ऑपरेशन करने से थोड़ा अधिक कुशल होता है। लेकिन एक स्मार्ट कंपाइलर कभी-कभी प्राप्त कर सकता है कि एक चर हमेशा एक सकारात्मक संख्या संग्रहीत करेगा और इस प्रकार इसे स्वयं अनुकूलित करेगा। और इसके अलावा अधिकांश अनुप्रयोगों के लिए इसका परिणाम एक महत्वपूर्ण प्रदर्शन दंड होगा।
जावा सभी अनुमानों के लिए '0' प्रिंट करता है। –
क्या आप system.out के आउटपुट के आधार पर 'जावा यह रखता है' धारणा बना रहे हैं? यह गलत धारणा –
'Math.Floor' दशमलव भाग के बिना एक डबल लौटाती है। यह –