-1

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

虽然我解析小数点,但它确实处理 0 和 > 0 值,但不处理负值。如何在一个解析操作中处理所有 3 个操作?

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

4

1 回答 1

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);
于 2013-07-03T09:45:31.550 回答