1

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

4

3 回答 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 回答