2009-10-07 18 views
48

पर मुझे निकटतम पांच तक डबल करने की आवश्यकता है। मुझे गणित के साथ ऐसा करने का कोई तरीका नहीं मिल रहा है। राउंड फ़ंक्शन। मैं यह कैसे कर सकता हूँ?निकटतम पांच

मुझे क्या करना चाहते हैं:

70 = 70 
73.5 = 75 
72 = 70 
75.9 = 75 
69 = 70 

और इतने पर ..

वहाँ एक आसान तरीका यह करने के लिए है?

उत्तर

96

प्रयास करें:

Math.Round(value/5.0) * 5; 
+4

इस विधि किसी भी संख्या के लिए काम करना चाहिए: http://stackoverflow.com/questions/326476/vba-how-to-round-to-: गणित.गोल (मूल्य/n) * n (यहाँ देखें निकटतम -5-या-10-या-x) –

+2

चेतावनी: फ्लोटिंग पॉइंट परिशुद्धता के कारण यह "लगभग गोलाकार" होगा ... – tbischel

37

यह काम करता है:

5* (int)Math.Round(p/5.0) 
+3

+1 क्योंकि int दशमलव से बेहतर है और सेबेस्टियान के उदाहरण में एक को कास्ट करने की आवश्यकता है परिणामस्वरूप आपके उदाहरण की तरह कुछ होगा। तो तुम्हारा पूरा पूरा है। –

+0

+1 हाँ यह वास्तव में बेहतर है। – user275587

9

यहाँ एक सरल कार्यक्रम है कि आप कोड को सत्यापित करने की अनुमति देता है। मिडपॉइंट राउंडिंग पैरामीटर से अवगत रहें, इसके बिना आप निकटतम संख्या तक घूमते रहेंगे, जो आपके मामले में पांच का अंतर है (72.5 उदाहरण में)।

class Program 
    { 
     public static void RoundToFive() 
     { 
      Console.WriteLine(R(71)); 
      Console.WriteLine(R(72.5)); //70 or 75? depends on midpoint rounding 
      Console.WriteLine(R(73.5)); 
      Console.WriteLine(R(75)); 
     } 

     public static double R(double x) 
     { 
      return Math.Round(x/5, MidpointRounding.AwayFromZero)*5; 
     } 

     static void Main(string[] args) 
     { 
      RoundToFive(); 
     } 
    } 
संबंधित मुद्दे