2010-04-22 59 views

回答

8

您将使用接受IformatProviderParse过载。

Double.Parse("23.56", new CultureInfo("...")) 

如果你不知道用来写你创建一个NumberFormatInfo文件并配置它的文化,只要你喜欢:

var nfi = new NumberFormatInfo(); 

nfi.NumberDecimalSeparator = "."; 

var d = Double.Parse("23.56", nfi); 
+0

此分隔符为我删除了逗号,并且没有添加点。我做错了什么? (谈论'var nfi'解决方案) – Rob 2013-06-20 11:07:30

+0

@Robuust,NumberFormatInfo的默认构造函数基于不变文化,因此它已经使用dot作为小数分隔符。在上面的示例中,它应该按照预期解析数字,我只重置该属性以说明它是可写的,并且可以根据需要对其进行配置。为您提供一个提供您所面临问题的详细信息的新问题可能是最好的选择。 – 2013-06-20 11:34:51

0

也可使用:

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

丑陋不堪,地狱,但这是.Net ... :)

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; 
} 
+0

您可能会发现Raymond Chen的这一智慧有趣:[不要使用全局状态来管理本地问题](http://blogs.msdn.com/b/oldnewthing/archive/2008/12/11/9193695的.aspx) – 2012-11-12 03:26:50