4

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

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

我可以用:

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

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

我最好的选择是什么?

4

3 回答 3

11

看:Double.Parse

IFormatProvider使用此重载在您的情况下指定 an 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
}
于 2013-07-16T19:27:29.477 回答
7

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

double d = double.Parse("2.2", CultureInfo.InvariantCulture);
于 2013-07-16T19:26:52.940 回答
4

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

decimal value = decimal.Parse(tmp[2], CultureInfo.InvariantCulture);
于 2013-07-16T19:27:01.203 回答