मैं निकटतम पूर्णांक के लिए मानों को कैसे गोल कर सकता हूं?
उदाहरण के लिए:
1.1 => 1
1.5 => 2
1.9 => 2
"Math.Ceiling ()" मेरी मदद नहीं कर रहा है। कोई विचार?
मैं निकटतम पूर्णांक के लिए मानों को कैसे गोल कर सकता हूं?
उदाहरण के लिए:
1.1 => 1
1.5 => 2
1.9 => 2
"Math.Ceiling ()" मेरी मदद नहीं कर रहा है। कोई विचार?
जवाबों:
अधिक के लिए आधिकारिक दस्तावेज देखें । उदाहरण के लिए:
मूल रूप से आप Math.Round
विधि को तीन पैरामीटर देते हैं।
नमूना कोड:
var roundedA = Math.Round(1.1, 0); // Output: 1
var roundedB = Math.Round(1.5, 0, MidpointRounding.AwayFromZero); // Output: 2
var roundedC = Math.Round(1.9, 0); // Output: 2
var roundedD = Math.Round(2.5, 0); // Output: 2
var roundedE = Math.Round(2.5, 0, MidpointRounding.AwayFromZero); // Output: 3
var roundedF = Math.Round(3.49, 0, MidpointRounding.AwayFromZero); // Output: 3
आप की जरूरत है MidpointRounding.AwayFromZero
अगर आप चाहते हैं एक .5 मूल्य को गिरफ्तार किया जाना है। दुर्भाग्य से यह डिफ़ॉल्ट व्यवहार नहीं है Math.Round()
। यदि MidpointRounding.ToEven
(डिफ़ॉल्ट) का उपयोग करते हुए मान को निकटतम सम संख्या 1.5
में गोल किया जाता है ( पर गोल किया जाता है 2
, लेकिन 2.5
इसे भी गोल किया जाता है 2
)।
away from zero
का मतलब यह भी है कि -1.5
यह गोल होगा -2
।
Math.Ceiling
हमेशा गोल (छत की ओर)
Math.Floor
हमेशा नीचे की ओर (मंजिल की ओर)
आप के बाद क्या है बस है
Math.Round
जो इस पोस्ट के अनुसार गोल है
आपको चाहिए Math.Round
, नहीं Math.Ceiling
। Ceiling
हमेशा "राउंड" ऊपर, जबकि Round
दशमलव बिंदु के बाद मूल्य के आधार पर ऊपर या नीचे गोल।
यह मैनुअल है, और थोड़े प्यारे तरीके से भी:
double d1 = 1.1;
double d2 = 1.5;
double d3 = 1.9;
int i1 = (int)(d1 + 0.5);
int i2 = (int)(d2 + 0.5);
int i3 = (int)(d3 + 0.5);
बस किसी भी संख्या में 0.5 जोड़ें, और इसे इंट (या इसे फर्श) पर डाल दें और इसे गणितीय रूप से सही ढंग से गोल किया जाएगा: डी
आप Math.Round का उपयोग कर सकते हैं क्योंकि अन्य लोगों ने सुझाव दिया है (अनुशंसित), या आप 0.5 जोड़ सकते हैं और एक इंट में डाल सकते हैं (जो दशमलव भाग को छोड़ देगा)।
double value = 1.1;
int roundedValue = (int)(value + 0.5); // equals 1
double value2 = 1.5;
int roundedValue2 = (int)(value2 + 0.5); // equals 2
आपके पास Math.Round फ़ंक्शन है जो वास्तव में आप चाहते हैं।
Math.Round(1.1) results with 1
Math.Round(1.8) will result with 2.... and so one.
1.5
मूल्य के बारे में क्या ? आपको अधिक मापदंडों की आवश्यकता है।
मैं इसके लिए देख रहा था, लेकिन मेरा उदाहरण 4.2769 के रूप में एक संख्या लेना था, और इसे केवल 4.3 की अवधि में छोड़ देना था। बिल्कुल वैसा ही नहीं, लेकिन अगर इससे मदद मिलती है:
Model.Statistics.AverageReview <= it's just a double from the model
फिर:
@Model.Statistics.AverageReview.ToString("n1") <=gives me 4.3
@Model.Statistics.AverageReview.ToString("n2") <=gives me 4.28
आदि...
उपयोग करें Math.Round
:
double roundedValue = Math.Round(value, 0)
var roundedVal = Math.Round(2.5, 0);
यह परिणाम देगा:
var roundedVal = 3
Math.Round(number)
निकटतम पूर्ण संख्या में राउंड का उपयोग करना ।
अपनी खुद की गोल विधि लिखें। कुछ इस तरह,
function round(x)
rx = Math.ceil(x)
if (rx - x <= .000001)
return int(rx)
else
return int(x)
end