【问题标题】:C# FormatException double.parse(), Why isn't 0.89 parsing? [duplicate]C# FormatException double.parse(),为什么不解析 0.89? [复制]
【发布时间】:2014-01-27 16:58:17
【问题描述】:
class Program
{
    static void Main(string[] args)
    {
        string str = "0.898";
        double dbl = Double.Parse(str);

        dbl++;

        Console.WriteLine(dbl);
        Console.ReadLine();
    }
}

我需要使用的所有其他格式,例如“100”都可以使用。但是只要我添加一个“点”,我就会有一个FormatException 错误。

【问题讨论】:

  • 代码在什么文化下运行?是否期望 0.89 而不是 0.89?

标签: c# string parsing double formatexception


【解决方案1】:

也许可以试试:

double dbl = double.Parse(str , CultureInfo.InvariantCulture);

在这里查看ideone

你的问题是你的文化不允许点。不变的文化不是唯一的解决方案,您还可以指定您的文化并使用它的分隔符。如果您当前的文化只接受逗号作为分隔符,它也可能是用逗号替换点的解决方案。不明确指定文化将影响在运行不同文化的不同机器中解析数字的问题。

任何特定于文化的东西总是很棘手,应该尽可能精确地定义。如果您非常清楚您将使用哪种双重格式,请定义它。如果您知道将使用哪种日期格式,请指定它等。

【讨论】:

  • 这个解释应该可以解释为什么不变的文化不是灵丹妙药,除非你用它来保存。
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 2015-03-08
相关资源
最近更新 更多