2009-05-25 10 views
44

सी # में, मैं निकटतम int में एक फ्लोट कैसे घुमा सकता हूं?मैं सी # में निकटतम int तक फ़्लोट कैसे करूं?

मैं गणित देख रहा हूं। छत और गणित। राउंड, लेकिन ये एक दशमलव देता है। क्या मैं इनमें से एक का उपयोग करता हूं तो एक इंट पर डाला जाता हूं?

+0

पूर्ण राउंडअप के लिए http://stackoverflow.com/questions/14/whats-the-difference-between-math-floor-and-math-truncate-in-net देखें। – paxdiablo

उत्तर

103

आप निकटतम पूर्णांक पर पूर्णांक बनाना चाहते हैं:

int rounded = (int)Math.Round(precise, 0); 

तुम भी उपयोग कर सकते हैं:

int rounded = Convert.ToInt32(precise); 

जो आपके लिए राउंड और कास्ट करने के लिए Math.Round(x, 0); का उपयोग करेगा। यह साफ दिखता है लेकिन आईएमओ थोड़ा कम स्पष्ट है।


आप को ख़त्म कर करना चाहते हैं:

int roundedUp = (int)Math.Ceiling(precise); 
+9

प्रश्न में अस्पष्टता है। शीर्षक से पता चलता है कि वह गोल करना चाहता है, जबकि वह कहता है कि वह निकटतम int चाहता है। ये 2 अलग-अलग चीजें हैं। – mmcdole

+0

वह गोल करना चाहता था। क्या वह नहीं होगा (int) गणित। छत (सटीक)? – configurator

+0

@configurator, हाँ, यही वह है जो मैं सोच रहा हूं। – mmcdole

9

मेरे सिर के ऊपर बंद:

float fl = 0.678; 
int rounded_f = (int)(fl+0.5f); 
+0

अंतिम एफ (0.5 एफ) की व्याख्या करने के लिए देखभाल? –

+4

एक इंट के लिए एक फ्लोट कास्ट के रूप में +0.5 नीचे गोल हो जाएगा, कास्ट राउंड निकटतम int को सुनिश्चित करता है। हालांकि, यह केवल सकारात्मक फ्लोट के लिए काम करता है। –

1

मैं इनमें से एक तो एक इंट के लिए डाली उपयोग करते हैं?

हां। ऐसा करने में कोई समस्या नहीं है। दशमलव और युगल पूर्णांक का प्रतिनिधित्व कर सकते हैं, इसलिए कोई प्रतिनिधित्व त्रुटि नहीं होगी। (आप उदाहरण है, जहां दौर रिटर्न 4.999 के लिए एक मामला हो जाएगा नहीं, ... 5. के बजाय)

2

सबसे आसान बस इसे करने के लिए 0.5f जोड़ने और फिर एक पूर्णांक को यह कास्ट करने के लिए है।

0

आप एक int में डाले जा सकते हैं बशर्ते आप सुनिश्चित हों कि यह एक int (Int32.MinValue से Int32.MaxValue) की सीमा में है।

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