c# - .NET String.Format() किसी संख्या के लिए हजारों स्थानों पर अल्पविराम जोड़ने के लिए




(14)

आप संख्याओं को प्रारूपित करने के लिए इस तरह के फ़ंक्शन का उपयोग कर सकते हैं और वांछित दशमलव स्थानों में वैकल्पिक रूप से पास कर सकते हैं। यदि दशमलव स्थान निर्दिष्ट नहीं हैं तो यह दो दशमलव स्थानों का उपयोग करेगा।

    public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
    {
        return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
    }

मैं दशमलव का उपयोग करता हूं लेकिन आप किसी अन्य को प्रकार बदल सकते हैं या किसी अज्ञात ऑब्जेक्ट का उपयोग कर सकते हैं। आप ऋणात्मक दशमलव स्थान मानों के लिए त्रुटि जांच भी जोड़ सकते हैं।

मैं एक संख्या के लिए हजारों जगह में एक अल्पविराम जोड़ना चाहता हूं। String.Format() ?


इस तरह बस इतना आसान है:

float num = 23658; // for example 
num = num.ToString("N0"); // Returns 23,658

अधिक जानकारी Here


ध्यान दें कि आप जिस प्रारूप को स्वरूपित कर रहे हैं वह संख्यात्मक होना चाहिए। ऐसा लगता है कि यह एक संख्या का एक स्ट्रिंग प्रतिनिधित्व लेगा और प्रारूप अल्पविराम के साथ है।


निम्न उदाहरण कई प्रारूप प्रदर्शित करता है जो कस्टम प्रारूप स्ट्रिंग का उपयोग करके स्वरूपित होते हैं जिनमें शून्य प्लेसहोल्डर्स शामिल होते हैं।

String.Format("{0:N1}", 29255.0);

या

29255.0.ToString("N1")

परिणाम "2 9, 255.0"

String.Format("{0:N2}", 29255.0);

या

29255.0.ToString("N2")

परिणाम "2 9, 255.00"


मैंने इसे सबसे आसान तरीका पाया:

myInteger.ToString("N0")

यदि आप इसे डेटाग्रिडव्यू में दिखाना चाहते हैं, तो आपको अपना प्रकार बदलना चाहिए, क्योंकि डिफ़ॉल्ट स्ट्रिंग है और चूंकि आप इसे दशमलव में बदलते हैं, यह फ़्लोटिंग पॉइंट के साथ संख्या के रूप में मानता है

Dim dt As DataTable = New DataTable
dt.Columns.Add("col1", GetType(Decimal))
dt.Rows.Add(1)
dt.Rows.Add(10)
dt.Rows.Add(2)

DataGridView1.DataSource = dt

यदि आप संस्कृति विशिष्ट चाहते हैं, तो आप इसे आजमा सकते हैं:

(19950000.0).ToString("N",new CultureInfo("en-US")) = 1 (19950000.0).ToString("N",new CultureInfo("en-US")) 50,000.00

(19950000.0).ToString("N",new CultureInfo("is-IS")) = 1 9.950.000,00

नोट: कुछ संस्कृतियों का उपयोग करने के बजाय दशमलव का मतलब है . तो सावधान रहें।


यद्यपि जावा में नीचे एक अच्छा समाधान है!

NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));

या एक अधिक मजबूत तरीके के लिए आप किसी विशेष स्थान के लोकेल को प्राप्त करना चाहते हैं, फिर नीचे के रूप में उपयोग करें:

int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));

यूएस लोकेल आउटपुट: $ 9, 999, 999.00

जर्मन लोकेल आउटपुट

Locale locale = new Locale("de", "DE");

आउटपुट: 9.9 99.9 99, 00 €

भारतीय लोकेल आउटपुट

Locale locale = new Locale("de", "DE");

आउटपुट: 9, 99, 999.00 रुपये

एस्टोनियाई लोकेल आउटपुट

Locale locale = new Locale("et", "EE");

आउटपुट: 9 99 99 999 €

जैसा कि आप विभिन्न आउटपुट में देख सकते हैं, आपको विभाजक के बारे में चिंता करने की ज़रूरत नहीं है क्योंकि एक अल्पविराम या डॉट या यहां तक ​​कि स्थान भी है, आप i18n मानकों के अनुसार स्वरूपित संख्या प्राप्त कर सकते हैं


संस्कृति और संभावित स्वरूपण मुद्दों के बारे में अब चिंता करने वाली विधि यह नहीं है कि मैंने इसे मुद्रा के रूप में स्वरूपित किया और बाद में मुद्रा चिह्न निकाला।

if (decimal.TryParse(tblCell, out result))

{
  formattedValue = result.ToString("C").Substring(1);
}

सबसे अधिक वोट दिया गया जवाब बहुत अच्छा था और लगभग 7 वर्षों तक सहायक रहा है। सी # 6.0 की शुरूआत और विशेष रूप से स्ट्रिंग इंटरपोलेशन के साथ एक साफ-सुथरा और आईएमओ सुरक्षित है, जो कि to add commas in thousands place for a number कहा गया है, करने का तरीका:

var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal

जहां वेरिएबल i प्लेसहोल्डर (यानी {0} ) के स्थान पर रखा जाता है। तो याद रखने की कोई आवश्यकता नहीं है कि कौन सी वस्तु किस स्थिति पर जाती है। स्वरूपण (यानी :n ) नहीं बदला है। नया क्या है इसकी पूरी सुविधा के लिए, आप इस पृष्ठ पर जा सकते हैं


String.Format("0,###.###"); also works with decimal places

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

यह आपको प्रासंगिक बिंदुओं पर अल्पविराम देगा।


int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));

int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000




.net