我下载了一个读取文件的程序,然后将双精度值从 String 解析为 Double。但我得到一个例外,因为这个文件包含带有“。”的数字。分隔符,但在我的文化中有“,”。如何明确设置文化?
问问题
2859 次
3 回答
9
您将使用Parse
接受IformatProvider
.
Double.Parse("23.56", new CultureInfo("..."))
如果您不知道用于编写文件的文化,您可以创建一个NumberFormatInfo
并根据需要进行配置:
var nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
var d = Double.Parse("23.56", nfi);
于 2010-04-22T15:54:35.223 回答
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;
}
于 2011-09-13T08:36:14.843 回答
0
也可用:
double.Parse((""+s).Replace(",","."), System.Globalization.CultureInfo.InvariantCulture)
丑得要命,但那是.Net ... :)
于 2010-04-22T16:14:22.103 回答