我的参数价格是十进制类型,它可以有正值,负值和零值。该值永远不会有小数,但需要显示小数。
当我解析小数时,它确实处理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
答案 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);