【问题标题】:c# double.parse() to always use a . period not commac# double.parse() 始终使用 .句号不是逗号
【发布时间】:2016-11-08 11:39:55
【问题描述】:

如何指定我的 decimal.Parse 必须始终期望接收带有 '.' 的字符串像“4.75”不管电脑的系统设置是什么?

我正在从 excel 中读取一个文件,它给了我一个“。”的价值。我看到如果我在我的笔记本电脑上运行我的程序它会抛出错误,因为它期望一个','

我可以使用:

string tmp1 = tmp[2].Replace('.', ',');

但是很明显,如果我的电脑想要一个''。那么它会报错。

我最好的选择是什么?

【问题讨论】:

    标签: c# decimal


    【解决方案1】:

    见:Double.Parse

    使用此重载在您的情况下指定IFormatProvider CultureInfo.InvariantCulture

    var value = double.Parse(tmp[2], CultureInfo.InvariantCulture);
    

    但是,如果您打算使您的流程持久,我建议您使用Double.TryParse

    double value;
    
    if(!double.TryParse(tmp[2],
       NumberStyles.None,
       CultureInfo.InvariantCulture,
       out value))
    {
        // error handling
    }
    

    【讨论】:

      【解决方案2】:

      使用Double.Parse Method (String, IFormatProvider)CultureInfo.InvariantCulture 进行解析。

      double d = double.Parse("2.2", CultureInfo.InvariantCulture);
      

      【讨论】:

        【解决方案3】:

        您可以使用 Decimal.Parse 的重载,这将允许您指定文化:

        decimal value = decimal.Parse(tmp[2], CultureInfo.InvariantCulture);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多