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