2009-10-05 12 views
12

मैं समझने की कोशिश कर रहा हूं कि सी # के साथ निकटतम दसवीं स्थिति में कैसे जाना है। उदाहरण के लिए, मेरे पास एक मान है जो डबल प्रकार का है। यह डबल वर्तमान में 10.75 पर सेट है। हालांकि, मुझे दसवीं स्थिति से पहले सब कुछ छीनने और फिर छीनने की जरूरत है। इस मामले में, मैं 10.8 का मूल्य मांग रहा हूं। मैं सी # में दसवीं स्थिति के लिए कैसे गोल करूं?सी # - गणित। राउंड

धन्यवाद!

+2

चूंकि आप स्पष्ट रूप से गणित के बारे में जानते हैं, ऐसा लगता है कि यह किसी भी तरह से आपके लिए काम नहीं कर रहा है। क्या आप दिखा सकते हैं कि आपने क्या प्रयास किया और समझाया कि यह आपकी अपेक्षा से अलग कैसे है? –

उत्तर

28
Math.Round(yourNumber, 1) 

दूसरा पैरामीटर दशमलव स्थानों की संख्या के लिए है। आपके मामले में आप एक अंतिम परिणाम के रूप में 1 दशमलव स्थान चाहते हैं।

13

आपको बस overload of Math.Round का उपयोग करने की आवश्यकता है जो decimals पैरामीटर लेता है।

Math.Round(10.75, 1) // returns 10.8 
बस की तुलना के लिए

:

Math.Round(10.75) // returns 11 
Math.Round(10.75, 0) // returns 11 
Math.Round(10.75, 2) // returns 10.75 
4

तुम सच में तुम सिर्फ मुद्रण के लिए स्वरूपित लेकिन चर ही अपने सटीक पकड़ करने के लिए अनुमति दे सकते हैं, यह दौर की जरूरत है या है? की तरह कुछ:

decimal value = 10.75; 
value.ToString ("#.#"); 
5

चूंकि आप अपने शीर्षक में Math.Round() प्रयुक्त, मुझे लगता है करने के लिए जा रहा हूँ आप पहले से ही बुनियादी Math.Round(10.75,1) दृष्टिकोण की कोशिश की है और यह कुछ आप की उम्मीद नहीं है देता है। इसे ध्यान में रखते, मैं, एक है कि एक MidPointRounding enum स्वीकार करता समारोह के लिए विभिन्न भार के से कुछ पर रखने का सुझाव देते विशेष रूप से:

http://msdn.microsoft.com/en-us/library/f5898377.aspx

2

तुम सिर्फ पहला दशमलव के बाद सब कुछ "कट" चाहते हैं यह, shoudl काम:

return Math.Round(value * 10)/10