格式小数,正负和零值为2位小数格式

时间:2013-07-03 09:36:35

标签: c# .net

我的参数价格是十进制类型,它可以有正值,负值和零值。该值永远不会有小数,但需要显示小数。

当我解析小数时,它确实处理0和> 0值但不处理负值。如何处理所有三合一解析操作?

decimal.Parse(a.price.ToString("##.00"), NumberStyles.AllowDecimalPoint)

我需要将数据转换为在欧洲文化中显示,因此-3.00的值应显示为-3,00。

这是我正在尝试的,它给了我一个例外

var culture = CultureInfo.GetCultureInfo("nl-NL");
Price = a.GroupId == g ? decimal.Parse(a.BidPrice.ToString("##.000",  culture), NumberStyles.Number) : decimal.Parse(decimal.Zero.ToString("##.000",  culture), NumberStyles.Number)

mscorlib.dll

中出现'System.FormatException'类型的第一次机会异常

其他信息:输入字符串的格式不正确。

添加一些测试数据,

3 should show up as 3,00
-3 should show up as -3,00
0 should show up as 0,00

修改 默认区域为en-GB

1 个答案:

答案 0 :(得分:3)

试试NumberStyles.Number,这样就可以了:

decimal price = -3;
decimal result = decimal.Parse(price.ToString("##.00"), NumberStyles.Number);
//Result: -3,00 (comma because I live in Europe :D)

希望这有帮助!

修改

要确保逗号使用德国CultureInfo,因为他们使用逗号表示小数,将句点用作千位分隔符:

decimal price = -3;
decimal result = decimal.Parse(price.ToString("##.00", CultureInfo.GetCultureInfo("de-DE")), NumberStyles.Number);