सी # में, राउंडिंग गणित फ़ंक्शन, छत और छत का काम क्यों नहीं करता int
? फ़ंक्शन के परिणाम को ध्यान में रखते हुए हमेशा एक पूर्णांक होगा, यह float
, double
या decimal
क्यों लौटाता है?मैथ क्यों नहीं है। राउंड एक int वापस?
उत्तर
double
has the range of ±5.0 × 10−324 to ±1.7 × 10308 और long
has the range of –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807। दुर्भाग्यवश सभी अभिन्न फ़्लोटिंग पॉइंट मानों को एक पूर्णांक द्वारा दर्शाया जा सकता है।
उदाहरण के लिए, 1e19
पहले ही 64-बिट हस्ताक्षरित पूर्णांक की सीमा से अधिक हो चुका है।
(long)Math.Round(1e19) == -9223372036854775808L // WTF?
हालांकि यह सच एकल तर्क overloads कि Math.Round(double)
और Math.Round(decimal)
हमेशा एक अभिन्न मान प्रदान करेंगे, इन भार के अभी भी एक पूर्णांक मान प्रकार वापस नहीं लौट सकते।
यदि आप जानते हैं कि फ़ंक्शन पर दिए गए मान को एक पूर्णांक मान प्रकार द्वारा प्रतिनिधित्व योग्य मान वापस कर दिया जाएगा, तो आप इसे स्वयं कास्ट कर सकते हैं। लाइब्रेरी ऐसा नहीं करेगी क्योंकि इसे सामान्य मामले पर विचार करने की आवश्यकता है।
नोट, हालांकि, लंबे पूर्णांक हैं जो * नहीं * युगल के रूप में प्रतिनिधित्व योग्य हैं: '(डबल) 100000000000000001L == 1e17' (और' 1e17 == 1e17 + 1')। –
@ एंटाल्स-जेड हाँ। अधिक सटीकता के लिए, ['दशमलव'] (http://msdn.microsoft.com/en-us/library/364x0z75 (v = vs.80) .aspx का उपयोग करके) प्रकार बेहतर है। –
फ़ंक्शन के परिणाम को ध्यान में रखते हमेशा एक पूर्णांक हो जाएगा,
कोई यह नहीं होगा। वापसी मान में दशमलव अंक की संख्या
System.Int32
: तुम भी साथ Math.Round Method (Double, Int32)
अंक टाइप अंकों की संख्या निर्दिष्ट कर सकते हैं।
+1 दरअसल, क्योंकि हर बार हमें int – V4Vendetta
तक गोल करने की आवश्यकता नहीं होती है, इसलिए मैं मदद नहीं कर सकता लेकिन यहां गूंगा हूं, राउंड के लिए प्रलेखन कहता है "निकटतम पूर्णांक देता है" - और आप कह रहे हैं कि यह हमेशा नहीं होता एक पूर्णांक वापस करें। यह समझ में नहीं आता है। – PandaWood
@ पांडावुड, आप कहां देखते हैं "निकटतम पूर्णांक देता है"?मुझे यह नहीं मिला, क्या आप लिंक साझा कर सकते हैं। यदि आप इस निकटतम पूर्णांक का जिक्र कर रहे हैं। यदि दो पूर्णांक के बीच आधे रास्ते का आंशिक घटक आधा है, जिसमें से एक भी है और दूसरा विषम है, तो यहां तक कि संख्या भी वापस आती है। ध्यान दें कि यह विधि एक अभिन्न प्रकार के बजाय डबल लौटाती है। फिर अंतिम भाग को नोट करें। – Habib
यह एक int की सीमा में शामिल किए गए संख्याओं से अधिक संख्याओं को शामिल करने के लिए किया जाता है। तो गणित। फ्लोर एक डबल लौटाएगा जिसे आकार और डेवलपर के आधार पर int या लंबे समय तक जाया जा सकता है। यदि आपने मैथ की आवश्यकता के बाहर Math.Floor की कोशिश की है, तो यह विफल हो गया होगा अगर मैथ.फ्लूर ने एक int वापस कर दिया, लेकिन ऐसा नहीं होता है, यह एक डबल देता है जिसे आप लंबे समय तक डाल सकते हैं।
double d = 4147483647.5678;
long a = (long)Math.Floor(d);
int b = (int)Math.Floor(d);
Console.WriteLine(a);
Console.WriteLine(b);
ध्यान दें कि int को कास्टिंग पर, बी को वापस MIN int पर धकेल दिया गया था, क्योंकि int इसे समायोजित नहीं कर सकता है।
- 1. क्यों नहीं गणित। राउंड/मंजिल/छत लंबी या int वापसी?
- 2. जावास्क्रिप्ट मैथ कितना बंद है। सी # Math.Round के लिए राउंड?
- 3. क्यों गणित। छत (डबल ए) सीधे int वापस नहीं?
- 4. क्यों (मैथ में var i) मैथ के माध्यम से पुनरावृत्ति नहीं करता है। * जावास्क्रिप्ट में?
- 5. मुख्य यहाँ क्यों वापस नहीं आता है?
- 6. क्यों countDownLatch.getCount() एक लंबा लेकिन एक int नहीं देता है?
- 7. यह कोड एक NullPointerException वापस क्यों नहीं करता है?
- 8. क्यों नहीं है [int] एक NullPointerException फेंक देते हैं?
- 9. दशमलव क्यों है। डाइवइड (int, int) काम, लेकिन नहीं (int/int)?
- 10. हेरोकू वापस 'devise/session.js वापस क्यों नहीं है'?
- 11. क्यों TCusomWinSocket.ReceiveBuf कभी वापस नहीं आता है?
- 12. क्यों scipy.io.wavfile.read एक tuple वापस नहीं करता है?
- 13. असाइनमेंट ऑपरेटर एक मान वापस क्यों करता है, संदर्भ नहीं?
- 14. क्यों हास्केल की Prelude.read एक वापसी वापस नहीं करता है?
- 15. क्यों [NSDictionary allKeys] एक सेट वापस नहीं करता है?
- 16. क्यों एक अजगर dict.update() वस्तु वापस नहीं करता है?
- 17. एक int वापस या एक int सूचक प्राप्त करें - क्या बेहतर है?
- 18. क्यों जावा कैलेंडर सेट (int वर्ष, int month, int date) सही तिथि नहीं लौटा रहा है?
- 19. स्कैला: सूची क्यों नहीं है [=> Int] काम करता है?
- 20. Math.ceil एक डबल वापस क्यों करता है?
- 21. मैथ ऑब्जेक्ट
- 22. 'int' ऑब्जेक्ट प्रतिदेय नहीं है
- 23. Regex.MatchData वापस लौट रहा है: विकल्प क्यों नहीं [स्ट्रिंग]?
- 24. एक कॉन्स int अंतर्निहित रूप से बाइट को क्यों डाला जाता है, लेकिन एक परिवर्तनीय int नहीं करता है?
- 25. क्यों एक गणक वापस लौटें?
- 26. क्यों स्ट्रिंग स्ट्रिंग की अनुमति है और कंपाइलर द्वारा int int की अनुमति नहीं है?
- 27. * (int *) 0 = 0 क्यों पहुंच उल्लंघन का कारण नहीं है?
- 28. टाइप क्यों "int" कभी 'शून्य' के बराबर नहीं है?
- 29. TimeSpan.FromSeconds (डबल) मिलीसेकंड के लिए राउंड क्यों करता है?
- 30. वेक्टर <const int> की अनुमति नहीं है। जोड़ी <const int, int> अनुमति क्यों है?
दौर अधिभारित है, और वापसी प्रकारों को स्टार्टर्स के लिए मिलान करना पड़ता है; पी – leppie
कल्पना कीजिए कि आप 'Math.Round (1E30)' कहते हैं और यह 'int' देता है, क्या होगा? –
तो आप कह रहे हैं कि यह निर्धारित करने के लिए बीसीएल का काम है कि आप क्या परिणाम चाहते हैं? –