如何将字符串格式化为金钱

Alv*_*vin 71 c#

我有一个字符串000000000100,我想转换为1.00,反之亦然.

前导零将被删除,最后两位是小数.

我举一个例子:

000000001000 <=> 10.00
000000001005 <=> 10.05
000000331150 <=> 3311.50
Run Code Online (Sandbox Code Playgroud)

下面是我正在尝试的代码,它给我的结果没有小数:

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

Llo*_*ell 71

将字符串转换为小数,然后将其除以100并应用货币格式字符串:

string.Format("{0:#.00}", Convert.ToDecimal(myMoneyString) / 100);
Run Code Online (Sandbox Code Playgroud)

编辑为根据请求删除货币符号并转换为十进制.

  • 你永远不应该用`float`或`double`来代表货币. (5认同)
  • 你得到免费的货币符号:)更简单使用`0:#.00` (3认同)
  • 为什么不使用double或float?请参见此处:http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency (2认同)
  • 您不应该使用“ F2”代替“#.00”吗? (2认同)

Moh*_*lam 51

您需要先将其转换为小数,然后使用货币格式对其进行格式化.

EX:

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

一个工作示例:https://dotnetfiddle.net/soxxuW


Bha*_*tap 29

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
Run Code Online (Sandbox Code Playgroud)

控制台输出:


小智 21

有用!

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

产量

Order Total: $1,921.39
Run Code Online (Sandbox Code Playgroud)

  • 如果我必须删除美元符号怎么办? (3认同)
  • @ParisQianSen 使用 N 而不是 C (2认同)

Aar*_*man 7

将字符串设置为double/decimal后,将其转换为特定语言环境使用的正确格式

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
Run Code Online (Sandbox Code Playgroud)


Sky*_*ing 5

尝试像这样简单

 var amtf = $"{Convert.ToDecimal(amt):#0.00}";
Run Code Online (Sandbox Code Playgroud)