如何指定我的 decimal.Parse 必须始终期望接收带有“。”的字符串 像“4.75”不管电脑的系统设置是什么?
我正在从 excel 中读取一个文件,它给了我一个“。”的价值。我看到如果我在我的笔记本电脑上运行我的程序它会抛出错误,因为它期望一个','
我可以用:
string tmp1 = tmp[2].Replace('.', ',');
但很明显,如果我的电脑想要一个''。那么它会给出一个错误。
我最好的选择是什么?
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
}
使用Double.Parse Method (String, IFormatProvider)
with CultureInfo.InvariantCulture
进行解析。
double d = double.Parse("2.2", CultureInfo.InvariantCulture);
您可以使用Decimal.Parse的重载,这将允许您指定文化:
decimal value = decimal.Parse(tmp[2], CultureInfo.InvariantCulture);