double
को int
में परिवर्तित करने का सबसे अच्छा तरीका क्या है? एक कास्ट इस्तेमाल किया जाना चाहिए?डबल से int
उत्तर
तुम एक डाली उपयोग करें यदि आप डिफ़ॉल्ट truncate-दिशा में शून्य व्यवहार चाहते हैं कर सकते हैं। वैकल्पिक रूप से, आप Math.Ceiling
, Math.Round
, Math.Floor
आदि का उपयोग करना चाहेंगे - हालांकि आपको अभी भी बाद में कलाकारों की आवश्यकता होगी।
यह मत भूलना कि int
की सीमा double
की सीमा से बहुत छोटी है। double
से int
पर एक कास्ट अपवाद नहीं फेंक देगा यदि मान int
की सीमा के बाहर एक अनचेक संदर्भ में है, जबकि Convert.ToInt32(double)
पर कॉल होगा। कास्ट का परिणाम (अनचेक संदर्भ में) स्पष्ट रूप से अनिर्धारित है यदि मान सीमा से बाहर है।
मुझे आश्चर्य है कि 64 बिट्स मशीन में, Convert.ToInt32 अब और ठीक नहीं है? – user496949
@user: एक 'int' का आकार हमेशा 32 बिट्स होता है, भले ही आप 32 या 64 बिट मशीन का उपयोग कर रहे हों। – Joren
और युगल 64 बिट int की तुलना में बहुत अधिक हो सकता है। –
हाँ, क्यों नहीं?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Convert
कक्षा का उपयोग अच्छी तरह से काम करता है।
int someOtherInt = Convert.ToInt32(someDouble);
Convert.ToInt32
आप आंशिक हिस्सा काटना होगा सबसे अच्छा तरीका है अगर आप कलाकारों का उपयोग
यह एक आम तौर पर असुरक्षित फ़ंक्शन है क्योंकि यह कुछ भी स्वीकार करता है। –
कन्वर्ट करने के लिए है, कि है, (int)SomeDouble
। यही है, अगर SomeDouble
4.9 999 थे तो परिणाम 4 होगा, न कि 5. int में कनवर्ट करना संख्या के चारों ओर नहीं है। आप उपयोग गोलाई Math.Round
मेरे तरीके चाहते हैं कर रहे हैं:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
क्या आपको नहीं लगता कि तीसरा तरीका अनावश्यक रूप से जटिल और धीमा है? –
तीसरा अंशकालिक भागों के साथ युगल के साथ काम नहीं करेगा। उदाहरण के लिए, 'double_value = 0.1' –
मुझे लगता है कि आप Math.Floor का उपयोग कर सकते हैं। – lindexi
मुझे लगता है कि सबसे अच्छा तरीका है Convert.ToInt32
है।
यहां एक संपूर्ण उदाहरण है
class Example
{
public static void Main()
{
double x, y;
int i;
x = 10.0;
y = 3.0;
// cast double to int, fractional component lost (Line to be replaced)
i = (int) (x/y);
Console.WriteLine("Integer outcome of x/y: " + i);
}
}
आप करीब पूर्णांक तक संख्या पूर्णांक बनाना निम्न कार्य करना चाहते हैं:
i = (int) Math.Round(x/y); // Line replaced
सबसे अच्छा तरीक़ा Convert.ToInt32
उपयोग करने के लिए है । यह तेज़ और सही ढंग से गोल भी है।
इसे और अधिक जटिल क्यों बनाते हैं?
label8.Text = "" + years.ToString("00") + " years";
आप एक लेबल, या कुछ और करने के लिए इसे भेजने के लिए चाहते हैं, और आप किसी भी आंशिक घटक नहीं करना चाहते हैं, इस का सबसे अच्छा तरीका
label8.Text = "" + years.ToString("00.00") + " years";
अगर आप केवल 2 के साथ चाहते है, और यह हमेशा
int myInt = (int) Math.Ceiling (myDouble) की तरह है;
- 1. एक डबल से int
- 2. डबल एक int
- 3. जहां [int, नाव, डबल]
- 4. लंबे डबल बनाम लंबे int
- 5. g ++- डबल-> int cast
- 6. क्या है (डबल (^) (int)) foofoo
- 7. MySQL में int से डबल तक कॉलम बदल रहा है?
- 8. int * से int
- 9. Int प्राथमिक कुंजी - int int से अधिक
- 10. पायथन: int64 से int
- 11. int
- 12. आप एक char * को int या एक डबल में सी
- 13. मैं एक अंतर्निहित कास्ट डबल -> int कैसे रोकूं?
- 14. क्यों गणित। छत (डबल ए) सीधे int वापस नहीं?
- 15. सी ++: एक int के लिए डबल कैसे गोल करें?
- 16. क्या एक समीकरण में प्रत्येक int को डबल करने के लिए डबल करता है?
- 17. सी # int- या आपत्ति करने वाली डबल कास्टिंग त्रुटि स्पष्टीकरण
- 18. डबल ए = ए + इंट बी और int + + डबल बी के बीच क्या अंतर है?
- 19. int-> डबल-> int मूल्य-संरक्षित होने की गारंटी है?
- 20. क्या होता है यदि मैं एक int को डबल डालता हूं, लेकिन डबल का मान सीमा से बाहर है?
- 21. डबल
- 22. डबल? = डबल? + डबल?
- 23. डबल से फ्लोट
- 24. दृश्य के पीछे दो से int रूपांतरण?
- 25. एफ # int64 से int
- 26. वर्चर से int
- 27. int से हेक्स स्ट्रिंग
- 28. स्ट्रिंग [] से int []
- 29. java.lang.Long से primitive int
- 30. एसक्यूएल INT से डेटाटाइम
"सर्वश्रेष्ठ" परिभाषित करें। निर्भर करता है कि क्या आप ऊपर/नीचे गोल करना चाहते हैं, आदि – RPM1984
@ आरपीएम 1 9 84: 'आदि' को परिभाषित करें :) –
@ आर्मेन - स्पर्श करें :) वास्तव में कोई फर्क नहीं पड़ता है - स्कीट यहां है, और कुछ भी मायने रखता है। – RPM1984