C#:如何为Double.Parse显式设置文化(字符串num)

时间:2010-04-22 15:50:57

标签: c# parsing culture

我下载了一个读取文件的程序,然后将双精度值从String解析为Double。但是我得到一个例外,因为这个文件包含带有'。'的数字。分隔符,但在我的文化中有','。如何明确设置文化?

3 个答案:

答案 0 :(得分:9)

您将使用接受Parse的{​​{1}}重载。

IformatProvider

如果您不知道用于编写文件的文化,请创建Double.Parse("23.56", new CultureInfo("...")) 并根据需要进行配置:

NumberFormatInfo

答案 1 :(得分:2)

这是我习惯做的,但我想我将来会使用NumberFormatInfo!

CultureInfo oldCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

try
{
   if (Thread.CurrentThread.CurrentCulture != null) 
   {
     double d = Double.Parse("23.5");
   }
}
finally
{
   Thread.CurrentThread.CurrentCulture = oldCulture;
}

答案 2 :(得分:0)

也可以使用:

double.Parse((""+s).Replace(",","."), System.Globalization.CultureInfo.InvariantCulture)

丑陋地狱,但那是.Net ......:)