【问题标题】:FormatException after parsing decimal解析十进制后出现FormatException
【发布时间】:2022-01-25 07:42:07
【问题描述】:

我在一台计算机上执行此操作时遇到问题:

字符串 S1 = "000,00"; 十进制 D1 = Decimal.Parse(S1);

System.FormatException: (*) in System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo System.Number.ParseDecimal(String) 中的信息,布尔型 parseDecimal) 值,NumberStyles 选项,NumberFormatInfo numfmt)

它适用于其他计算机。

我尝试了所有想到的东西,其中包括:

Decimal.Parse(S1, CultureInfo.InvariantCulture);

Decimal.Parse(S1, new CultureInfo("pl-PL"));

Decimal.Parse(S1, new CultureInfo("en-US"));

将 ',' 更改为 '.' 试过 decimal.Parse、Double.Parse、double.Parse = 同样的问题。

【问题讨论】:

  • CultureInfo.CurrentCulture 将为您提供客户端 PC 中启用的文化的解析。
  • 您是否检查过它们是否安装了相同的 .NET 框架?

标签: c# parsing


【解决方案1】:

前段时间我也遇到过类似的问题。选项CultureInfo.InvariantCultureNumberStyles.Any 解决了这个问题。

提供InvariantCulture 会导致解析使用“,”字符作为千位分隔符。 提供NumberStyles.Number 允许数字格式,其中包括 AllowThousands 选项:

double.TryParse(Value, NumberStyles.Number, CultureInfo.InvariantCulture, out result)

【讨论】:

  • 是的,它奏效了。我认为你是对的 housands 分隔符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
相关资源
最近更新 更多