2011-01-14 12 views
6

दशमलव राशि है, 2 दशमलव स्थानों के लिए ट्रिम करने के लिए वर्तमानदशमलव राशि 2 दशमलव स्थानों के लिए ट्रिम करने के लिए करना चाहते हैं, अगर वर्तमान

+0

तुम सिर्फ "अतिरिक्त बंद कलम करना चाहते हैं decimals "या आप जॉन की तरह दौर करना चाहते हैं? –

+1

छंटनी या गोल? छंटनी करने के लिए: http://stackoverflow.com/questions/329957/truncate-decimal-number-not-round-off – SwDevMan81

उत्तर

16

अगर आप value = Decimal.Round(value, 2) उपयोग करने की कोशिश है करना चाहते हैं?

using System; 

class Test 
{  
    static void Main() 
    { 
     decimal d = 1234.5678m; 
     Console.WriteLine("Before: {0}", d); // Prints 1234.5678 
     d = decimal.Round(d, 2); 
     Console.WriteLine("After: {0}", d); // Prints 1234.57 
    } 
} 

ध्यान दें कि यह बजाय गोलाई है बस (इसलिए यहाँ यह तक बढ़ाना है) ट्रिमिंग ... वास्तव में क्या आप की जरूरत है:

उदाहरण के लिए

? संभावना है कि Decimal संरचना आपको जो भी करने की ज़रूरत है उसका समर्थन करती है। अधिक विकल्पों के लिए MSDN से परामर्श लें।

+0

Math.Round बैंकर के गोलाकार कर सकता है। http://msdn.microsoft.com/en-us/library/ms131275.aspx –

8
decimal.Truncate(myDecimal * 100)/100 

यह पहले दो दशमलव स्थानों के बाद सब कुछ हटा देगा। राउंडिंग के लिए जॉन के जवाब देखें।

0

यह काम करना चाहिए (संपादित करें: गोलाई दूर करने के लिए फिक्स्ड):

((Int32)(value * Math.Pow(10, decimalPlaces)))/(Math.Pow(10D, decimalPlaces)); 
+2

सी # '^' 'xor' है। इसके अलावा, अगर कोई 'दशमलव' संभावनाओं का उपयोग करता है तो यह एक जानबूझकर विकल्प है और शायद वे एक और प्रकार नहीं चाहते हैं (इसके अलावा आपका उदाहरण किसी भी मामले में बंद है)। – Joey

+0

ठीक है, क्षमा करें math.exp() होना चाहिए। अन्यथा यह कैसे बंद है? –

+0

'Int' सी # में एक प्रकार नहीं है और आप बाद में पूर्णांक विभाजन कर रहे हैं, वैसे भी कोई दशमलव स्थान नहीं छोड़ रहे हैं। – Joey

1

तो इसकी सिर्फ प्रदर्शन प्रयोजनों के लिए, आप का उपयोग कर सकते हैं:

Console.Out.WriteLine("Number is: {0:F2}", myDecimalNumber); 
संबंधित मुद्दे