我想知道我是否失去了一些東西...我正在標準的英國文化下運行。Double.TryParse()忽略NumberFormatInfo.NumberGroupSizes?
Double result = 0;
if (Double.TryParse("1,2,3", NumberStyles.Any, CultureInfo.CurrentCulture, out result))
{
Console.WriteLine(result);
}
預期的輸出結果不算什麼......「1,2,3」不應該解析爲雙精度。但它確實如此。根據.NET 2.0 MSDN documentation
AllowThousands表示數字字符串可以有組 分隔符;例如,將數百人與數千人分開。 有效組分隔字符是由 的NumberFormatInfo的 NumberGroupSeparator和CurrencyGroupSeparator屬性和每個組中的數字被確定 通過 的NumberFormatInfo的NumberGroupSizes和CurrencyGroupSizes屬性的數目來確定。
允許數千包含在NumberStyles.Any中。 NumberGroupSizes是3我的文化。這只是Double.Parse中的一個錯誤?似乎不太可能,但我不能發現我做錯了什麼....
這可能是爲什麼我在測試時得到有效的結果[我的回答](http://stackoverflow.com/questions/1014535/float-parse-doesnt-work-the -way-i-wanted/1014559#1014559)上的類似問題。 – ChrisF 2012-01-16 17:28:13
只是好奇,但結果的價值是什麼? – Aaron 2012-01-16 17:45:46
我想你應該問問微軟是否有錯誤,但是我得到和你一樣的行爲。總是可以做'NumberStyles.Any^NumberStyles.AllowThousands',但如果你期待三個合法團體,這並沒有多大用處。 – Jodrell 2012-01-16 17:48:23