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

本文关键字:分隔符 十进制 小数 千位 | 更新日期: 2023-09-27 17:49:45

我正在将全球化应用到一个应用程序中,并且我有以下问题:

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

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

然后我需要将该值转换为小数,也可以有一个货币符号,但令人头痛的是双精度"。"

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

抛出"Input string was not in a correct format"。我知道这是由双"。"引起的,因为当我将区域设置更改为en-AU时,在这种情况下,格式化的值是$5,000.00和十进制。Parse工作完美。任何想法?

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

通过我自己的修改,我确信您的系统文化设置出了问题。我是在win8.1 x64与。net 4.5.1,和:

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

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

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