当千位分隔符和小数分隔符相同时,十进制解析C#

时间:2014-03-13 05:00:44

标签: c# currency

我将全球化应用于应用程序,我遇到以下问题:

我默认将en-US设置为文化,然后执行格式以向用户显示格式化的值。

string FormattedValue = string.Format("{0:C}", 5000.00); //That returns $5.000.00

然后我需要将该值转换为十进制,并且也可能有一个货币符号,但头痛的是双重"。"

var DecimalValue = decimal.parse(value,NumberStyles.AllowCurrencySymbol);

它抛出"输入字符串的格式不正确" 。而且我知道这是由双重"引起的。"因为当我将文化更改为例如en-AU时,在这种情况下格式化的值是$ 5,000.00并且decimal.parse完美地工作。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此时我自己修修补补,我确信你的系统的文化设置出了问题。我使用的是.NET 4.5.1的Win 8.1 x64,并且:

  CultureInfo.GetCultures(CultureTypes.AllCultures)
    .Where(c => c.NumberFormat.CurrencyDecimalSeparator[0] == c.NumberFormat.CurrencyGroupSeparator[0])
    .ToList()
    .ForEach(c => Console.WriteLine(c.Name));

在我的系统上没有打印任何内容。

我相信您可以实现自己的IFormatProvider实现,但我真的不认为这会解决您的问题。