2012-06-17 4 views
12

(int)myDouble(int)Math.Truncate(myDouble) से अलग है?क्या (int) myDouble कभी भी (int) Math से भिन्न होता है। टर्नकेट (myDouble)?

क्या कोई कारण है कि मुझे एक दूसरे को पसंद करना चाहिए?

+0

मेरा भयानक अनुमान यह होगा कि उत्तरार्द्ध सीएलआर एपीआई का एक स्पष्ट रूप से परिभाषित पहलू है, जबकि पूर्व भाषा विनिर्देश पर निर्भर करता है, भले ही यह बिल्कुल समान है। –

+0

मुझे लगता है कि 'Math.Truncate' का उपयोग करना एक अनियंत्रित चरण है। – Oded

+3

'Math.Truncate' का उद्देश्य तब होता है जब आपको अपना परिणाम 'डबल' के रूप में रखने के लिए कोई अंशकालिक भाग नहीं होता है। यदि आप इसे 'int' में परिवर्तित करना चाहते हैं, तो कास्ट का उपयोग करें। – Douglas

उत्तर

8

Math.Truncate का उद्देश्य तब होता है जब आपको अपने परिणाम को दोहरे भाग के साथ डबल के रूप में रखने की आवश्यकता होती है। यदि आप इसे int में परिवर्तित करना चाहते हैं, तो सीधे कास्ट का उपयोग करें।

संपादित:

जब आप एक डबल या नाव मूल्य से एक अभिन्न प्रकार में बदलने का, मूल्य छोटा किया गया है: संदर्भ के लिए, "Explicit Numeric Conversions Table" से प्रासंगिक दस्तावेज है।

5

रूप इग्नेसियो वेज़क्वेज़-अब्राम(int)myDouble द्वारा बताया (int)Math.Truncate(myDouble) के रूप में एक ही तरह से असफल हो जायेगी जब myDouble बहुत बड़ी है।

तो आउटपुट में कोई अंतर नहीं है, लेकिन (int)myDouble तेजी से काम कर रहा है।

+2

+1: यह उत्तर एक प्रासंगिक बिंदु उठाता है। सिवाय इसके कि आपको छिद्रित डबल से '(int)' कास्ट निकालना होगा, क्योंकि आप अन्यथा एक ही स्थिति में समाप्त हो जाते हैं। – Douglas

+0

@Ignacio Vazquez-Abrams, आप सही हैं। – dantuch

+0

अगर हम उम्मीद करते हैं कि संख्या काफी बड़ी है तो हम '(लंबी) 'का उपयोग नहीं कर सके? – mpen

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^