2 दशमलव स्थानों पर एक फ़्लोटिंग स्वरूपण


210

मैं वर्तमान में एक क्लाइंट वेबसाइट के लिए एक बिक्री मॉड्यूल का निर्माण कर रहा हूं। अब तक मुझे पूरी तरह से गणना करने के लिए बिक्री मूल्य मिला है, लेकिन जहां मैं फंस गया हूं वह आउटपुट को 2 दशमलव स्थानों पर प्रारूपित कर रहा है।

मैं वर्तमान में इसे एक चर में बुला रहा हूं ताकि मैं परिणामों को एक सूची में बाँध सकूं।

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),

क्या कोई मुझे दिखा सकता है कि आउटपुट को 2 दशमलव स्थानों पर कैसे प्रारूपित किया जाए ?? बहुत धन्यवाद!


यह जांचें मुझे यकीन नहीं है लेकिन यह हो सकता है कि यह ToString ("#। ##") काम करेगा;
सैयदा

जवाबों:


467

आप प्रारूप को ToStringविधि में पास कर सकते हैं , जैसे:

myFloatVariable.ToString("0.00"); //2dp Number

myFloatVariable.ToString("n2"); // 2dp Number

myFloatVariable.ToString("c2"); // 2dp currency

मानक संख्या प्रारूप स्ट्रिंग्स


38
"N2" और "C2" हजार विभाजक जोड़ेंगे जबकि "0.00" नहीं होगा।
मार्क के

5
बस अगर आप अनिश्चित हैं (मैं था), फ़्लोट मान को स्वरूपित करने के लिए ये सभी तरीके गोलाई प्रदान करते हैं।
रेनीपेट

46

पहली चीज जो आपको करने की ज़रूरत है वह कीमतों के decimalबजाय प्रकार का उपयोग करना है float। उपयोग करना इसके floatलिए बिल्कुल अस्वीकार्य है क्योंकि यह अधिकांश दशमलव अंशों का सही प्रतिनिधित्व नहीं कर सकता है।

एक बार जब आप ऐसा कर लेते हैं, तो Decimal.Round()इसका उपयोग 2 स्थानों पर किया जा सकता है।


36

String.Format("{0:#,###.##}", value)

स्ट्रिंग फॉर्मेटिंग से C # में अधिक जटिल उदाहरण :

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

यह 1243.50 पास होने पर “$ 1,240.00 1, का उत्पादन करेगा। यह समान प्रारूप को आउटपुट करेगा लेकिन कोष्ठकों में यदि संख्या ऋणात्मक है, और संख्या शून्य होने पर स्ट्रिंग "शून्य" का उत्पादन करेगी।



4
string outString= number.ToString("####0.00");

1
कस्टम प्रारूप में "0" और "#" के बीच भिन्न हैं। "0": यदि मौजूद है तो शून्य को इसी अंक के साथ बदल देता है; अन्यथा, परिणाम स्ट्रिंग में शून्य दिखाई देता है। "#": यदि मौजूद है तो इसी अंक के साथ "#" चिन्ह को बदल देता है; अन्यथा, परिणाम स्ट्रिंग में कोई अंक नहीं दिखाई देता है। संदर्भ
劉鎮瑲

3

जैसा कि पहले ही उल्लेख किया गया है, आपको एक स्वरूपित परिणाम का उपयोग करने की आवश्यकता होगी; जो सभी के माध्यम से किया जाता है Write(), WriteLine(), Format(), और ToString()तरीकों।

जो उल्लेख नहीं किया गया है वह निश्चित-बिंदु प्रारूप है जो दशमलव स्थानों की एक निर्दिष्ट संख्या के लिए अनुमति देता है। यह एक 'एफ' का उपयोग करता है और 'एफ' के बाद की संख्या आउटपुट दशमलव स्थानों की संख्या है, जैसा कि उदाहरणों में दिखाया गया है।

Console.WriteLine("{0:F2}", 12);    // 12.00 - two decimal places
Console.WriteLine("{0:F0}", 12.3);  // 12 - ommiting fractions

2

यह उन मामलों के लिए है जो आप प्रक्षेपित स्ट्रिंग्स का उपयोग करना चाहते हैं । मैं वास्तव में यह पोस्ट कर रहा हूं क्योंकि मैं परीक्षण और त्रुटि से थक गया हूं और अंततः हर बार डॉक्स के टन के माध्यम से स्क्रॉल कर रहा हूं, मुझे कुछ स्केलर को प्रारूपित करने की आवश्यकता है।

$"{1234.5678:0.00}"        "1234.57"        2 decimal places, notice that value is rounded
$"{1234.5678,10:0.00}"     "   1234.57"     right-aligned
$"{1234.5678,-10:0.00}"    "1234.57   "     left-aligned
$"{1234.5678:0.#####}"     "1234.5678"      5 optional digits after the decimal point
$"{1234.5678:0.00000}"     "1234.56780"     5 forced digits AFTER the decimal point, notice the trailing zero
$"{1234.5678:00000.00}"    "01234.57"       5 forced digits BEFORE the decimal point, notice the leading zero
$"{1234.5612:0}"           "1235"           as integer, notice that value is rounded
$"{1234.5678:F2}"          "1234.57"        standard fixed-point
$"{1234.5678:F5}"          "1234.56780"     5 digits after the decimal point, notice the trailing zero
$"{1234.5678:g2}"          "1.2e+03"        standard general with 2 meaningful digits, notice "e"
$"{1234.5678:G2}"          "1.2E+03"        standard general with 2 meaningful digits, notice "E"
$"{1234.5678:G3}"          "1.23E+03"       standard general with 3 meaningful digits
$"{1234.5678:G5}"          "1234.6"         standard general with 5 meaningful digits
$"{1234.5678:e2}"          "1.23e+003"      standard exponential with 2 digits after the decimal point, notice "e"
$"{1234.5678:E3}"          "1.235E+003"     standard exponential with 3 digits after the decimal point, notice "E"
$"{1234.5678:N2}"          "1,234.57"       standard numeric, notice the comma
$"{1234.5678:C2}"          "$1,234.57"      standard currency, notice the dollar sign
$"{1234.5678:P2}"          "123,456.78 %"   standard percent, notice that value is multiplied by 100
$"{1234.5678:2}"           "2"              :)

प्रदर्शन की चेतावनी

प्रक्षेपित तार धीमे होते हैं। मेरे अनुभव में यह क्रम है (धीमी गति से):

  1. value.ToString(format)+" blah blah"
  2. string.Format("{0:format} blah blah", value)
  3. $"{value:format} blah blah"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.