【问题标题】:Convert string representation of numbers less than 1 to double将小于 1 的数字的字符串表示形式转换为 double
【发布时间】:2011-10-07 06:05:28
【问题描述】:

Convert.ToDouble 方法(字符串)将数字的指定字符串表示形式转换为等效的双精度浮点数。

我有这行代码: double d = Convert.ToDouble("0.3");

它给了我 3.0 而不是 0.3。对于大于 1 的数字,它按预期工作。 为什么?

【问题讨论】:

  • 它适用于 CultureInfo 选项:double d = Convert.ToDouble("0.3", CultureInfo.InvariantCulture);
  • 我想你的意思是Convert.ToDouble("0,3") ;-)
  • 就是这样,但我想要点,所以我将我的文化设置改为点,一切似乎都正常,直到我尝试了小于零的数字。

标签: c# string double


【解决方案1】:

很可能是语言环境问题。在某些文化中,. 不是小数分隔符。

试试double.Parse("0.3",CultureInfo.InvariantCulture)

【讨论】:

    【解决方案2】:

    试试这个:

    NumberFormatInfo provider = new NumberFormatInfo();
    provider.NumberDecimalSeparator = ".";
    double d = Convert.ToDouble("0.3", provider);
    

    【讨论】:

      【解决方案3】:

      当前的文化设置是什么?这可能是因为在文化设置中您使用的是“。”不是小数分隔符!

      【讨论】:

        猜你喜欢
        • 2017-01-20
        • 1970-01-01
        • 2010-10-22
        • 2022-01-23
        • 2010-11-02
        • 2012-01-06
        相关资源
        最近更新 更多