Bir şey kaçırıp kaçırmadığımı bilmek isterim ... Standart İngiliz kültürü altında koşuyorum.Double.TryParse() NumberFormatInfo.NumberGroupSizes'i yoksayar?
Double result = 0;
if (Double.TryParse("1,2,3", NumberStyles.Any, CultureInfo.CurrentCulture, out result))
{
Console.WriteLine(result);
}
Beklenen çıktı hiçbir şey olmaz ... "1,2,3" çift olarak ayrıştırılmamalıdır. Ancak öyle. NET 2,0 MSDN documentation
AllowThousands göre sayısal dize grup ayırıcılar olabileceğini gösterir; Örneğin yüz binlerce kişiden ayrılıyor. Geçerli grubu ayırıcı karakter NumberFormatInfo arasında NumberGroupSeparator ve CurrencyGroupSeparator özellikleri ve NumberFormatInfo ait NumberGroupSizes ve CurrencyGroupSizes özellikleri ile belirlenir, her bir gruptaki basamak sayısı ile tespit edilir.
Sayıların sayısı NumberStyles.Any'de bulunabilir. Kültürüm için NumberGroupSizes 3'tür. Bu, Double.Parse'deki bir hata mı? olası görünmüyor ama neyi yanlış yaptığımı göremiyorum ....
Bu olabilir test ederken ben geçerli bir sonuç aldık niye [cevabım] (http://stackoverflow.com/questions/1014535/float-parse-doesnt-work-the -way-i-aranıyor/1014559 # 1014559) benzer bir soru üzerine. – ChrisF
Sadece merak, ama sonuç değeri nedir? – Aaron
Sanırım Microsoft'a bir hata mı soruyorsunuz, ama seninle aynı davranışı alıyorum. Her zaman 'NumberStyles.Any^NumberStyles.AllowThousands' yapabilirsiniz, ancak üçlü yasal gruplarını bekliyoruz eğer çok fazla değil. – Jodrell