Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将带正负和零值的十进制设置为小数点后2位格式_C#_.net - Fatal编程技术网

C# 将带正负和零值的十进制设置为小数点后2位格式

C# 将带正负和零值的十进制设置为小数点后2位格式,c#,.net,C#,.net,我有一个参数price,类型为decimal,它可以有正值、负值和零值。该值永远不会有小数点,但需要显示小数点 当我解析十进制时,它确实处理0和>0的值,但不处理负值。如何在一个解析操作中处理所有3个 decimal.Parse(a.price.ToString("##.00"), NumberStyles.AllowDecimalPoint) 我需要转换数据以显示在欧洲文化中,因此-3.00的值应显示为-3,00 这是我正在尝试的,它给了我一个例外 var culture = Culture

我有一个参数price,类型为decimal,它可以有正值、负值和零值。该值永远不会有小数点,但需要显示小数点

当我解析十进制时,它确实处理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

请尝试
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);

这似乎很奇怪。。你有十进制数,你对它做“翻腾”,只是为了把它解析回十进制数?你不想得到什么?我的朋友,生活很奇怪,我需要小数来携带小数,这就是我传递数据以接受值的系统的方式。如果我真的想要逗号而不是小数呢?在这种情况下,我会使用什么格式?似乎对我不起作用。它给了我一个异常“mscorlib.dll中第一次出现'System.FormatException'类型的异常”。查看关于我正在尝试执行的操作的更新问题。异常说明了什么?另一个问题。使用这种格式,数字-350显示为-350000。我希望是-350,00(其中,是按照反文化的十进制分隔符)。默认的文化信息是什么?