कैसे पैसे के लिए स्ट्रिंग स्वरूपित करने के लिए


83

मेरे पास एक स्ट्रिंग है 000000000100, जिसे मैं 1.00 में बदलना चाहता हूं और इसके विपरीत।

शून्य को हटा दिया जाएगा, अंतिम दो अंक दशमलव है।

मैं और उदाहरण देता हूं:

000000001000 <=> 10.00
000000001005 <=> 10.05
000000331150 <=> 3311.50

नीचे मैं कोड की कोशिश कर रहा हूँ, यह मुझे दशमलव के बिना परिणाम दे रहा है:

amtf = string.Format("{0:0.00}", amt.TrimStart(new char[] {'0'}));

1
दूसरे तरीके के लिए 100 से गुणा करें और PadLeft(12,'0')स्ट्रिंग का उपयोग करें
— V4Vendetta

जवाबों:


76

स्ट्रिंग को दशमलव में परिवर्तित करें और फिर इसे 100 से विभाजित करें और मुद्रा प्रारूप स्ट्रिंग लागू करें:

string.Format("{0:#.00}", Convert.ToDecimal(myMoneyString) / 100);

अनुरोध के अनुसार मुद्रा प्रतीक को हटाने और इसके बजाय दशमलव में परिवर्तित करने के लिए संपादित किया गया।


3
और आपको मुद्रा का प्रतीक मुफ्त में मिलता है :) उपयोग करने के लिए सरल0:#.00
— V4Vendetta

@ ThePower धन्यवाद, लेकिन 'C' मुद्रा में परिवर्तित हो जाएगा, जो $ साइन लौटाएगा।
— एल्विन

7
आपको कभी भी मुद्रा का उपयोग floatया doubleप्रतिनिधित्व नहीं करना चाहिए ।
— जॉन ग्रांट

2
डबल या फ्लोट का उपयोग क्यों नहीं करते? यहां देखें: stackoverflow.com/questions/3730019/…
— Dov Miller

3
क्या आपको "# .00" के बजाय "F2" का उपयोग नहीं करना चाहिए?
— 19 Gro में पॉल ग्रोके

58

आपको इसे पहले दशमलव में बदलने की आवश्यकता होगी, फिर इसे धन प्रारूप के साथ प्रारूपित करें।

पूर्व:

decimal decimalMoneyValue = 1921.39m;
string formattedMoneyValue = String.Format("{0:C}", decimalMoneyValue);

एक कार्यशील उदाहरण: https://dotnetfiddle.net/soxxuW


43
decimal value = 0.00M;
value = Convert.ToDecimal(12345.12345);
Console.WriteLine(value.ToString("C"));
//OutPut : $12345.12
Console.WriteLine(value.ToString("C1"));
//OutPut : $12345.1
Console.WriteLine(value.ToString("C2"));
//OutPut : $12345.12
Console.WriteLine(value.ToString("C3"));
//OutPut : $12345.123
Console.WriteLine(value.ToString("C4"));
//OutPut : $12345.1234
Console.WriteLine(value.ToString("C5"));
//OutPut : $12345.12345
Console.WriteLine(value.ToString("C6"));
//OutPut : $12345.123450

कंसोल आउटपुट:


यह संस्कृति के विचरण का उचित सम्मान करेगा। सांस्कृतिक अंतर न केवल प्रतीक को बदल सकते हैं, बल्कि अंक विभाजकों को भी (और सैद्धांतिक रूप से मुद्रा प्रतीक की स्थिति)। msdn.microsoft.com/en-us/library/syy068tk(v=vs.90).aspx
— Robear


12

एक बार जब आपके पास एक विशिष्ट लोकेल उपयोग के लिए इसे सही प्रारूपण में लाने के लिए एक डबल / दशमलव में अपनी स्ट्रिंग होती है

double amount = 1234.95;

amount.ToString("C") // whatever the executing computer thinks is the right fomat

amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-ie"))    //  €1,234.95
amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("es-es"))    //  1.234,95 € 
amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-GB"))    //  £1,234.95 

amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-au"))    //  $1,234.95
amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-us"))    //  $1,234.95
amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-ca"))    //  $1,234.95

GetCultureInfoUWP में मौजूद नहीं है।
— विस्कॉन्सिन

4
    string s ="000000000100";
    decimal iv = 0;
    decimal.TryParse(s, out iv);
    Console.WriteLine((iv / 100).ToString("0.00"));

आपको कभी भी मुद्रा का उपयोग floatया doubleप्रतिनिधित्व नहीं करना चाहिए ।
— जॉन ग्रांट

4

इस तरह सरल प्रयास करें

 var amtf = $"{Convert.ToDecimal(amt):#0.00}";

3
//Extra currency symbol and currency formatting: "€3,311.50":
String result = (Decimal.Parse("000000331150") / 100).ToString("C");

//No currency symbol and no currency formatting: "3311.50"
String result = (Decimal.Parse("000000331150") / 100).ToString("f2");


1

पहले दशमलव में अपनी स्ट्रिंग को पार्स करें।


0

कुछ इस तरह की कोशिश करो:

decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);

0
var tests = new[] {"000000001000", "000000001005", "000000331150"};
foreach (var test in tests)
{
    Console.WriteLine("{0} <=> {1:f2}", test, Convert.ToDecimal(test) / 100);
}

चूंकि आपने मुद्रा प्रतीक के लिए नहीं पूछा था, इसलिए मैंने "सी" के बजाय "एफ 2" का उपयोग किया है


0

प्रयत्न

amtf =  amtf.Insert(amtf.Length - 2, ".");

यह अग्रणी शून्य को नहीं हटाता है। यदि आप सरल स्ट्रिंग हेरफेर मार्ग पर जा रहे हैं, तो आपको अपने कोड के अंत में .Trim ("0" .ToCharArray ()) जोड़ना होगा
— एंटनी स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.