我有一个像 000000000100,我想将其转换为1.00,反之亦然。
前导零将被删除,最后两位是小数。
我举更多的例子:
000000001000 <=> 10.00
000000001005 <=> 10.05
000000331150 <=> 3311.50
下面是我正在尝试的代码,它给了我没有小数的结果:
amtf = string.Format("{0:0.00}", amt.TrimStart(new char[] {'0'}));
Answers:
将字符串转换为十进制,然后将其除以100,然后应用货币格式字符串:
string.Format("{0:#.00}", Convert.ToDecimal(myMoneyString) / 100);
根据要求删除了货币符号,并转换为小数。
0:#.00
float或double代表货币。
您需要先将其转换为小数,然后再使用货币格式进行格式化。
例如:
decimal decimalMoneyValue = 1921.39m;
string formattedMoneyValue = String.Format("{0:C}", decimalMoneyValue);
一个工作示例:https : //dotnetfiddle.net/soxxuW
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
控制台输出:

有用!
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
输出量
Order Total: $1,921.39
将字符串转换为双精度/十进制格式后,可以将其设置为适合特定语言环境的正确格式
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
GetCultureInfo在UWP中似乎不存在。
//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");
尝试这样的事情:
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
尝试
amtf = amtf.Insert(amtf.Length - 2, ".");
PadLeft(12,'0')字符串