Chciałbym wiedzieć, czy czegoś brakuje, czy nie ... Biegnę w ramach standardowej kultury Wielkiej Brytanii.Double.TryParse() ignoruje NumberFormatInfo.NumberGroupSizes?
Double result = 0;
if (Double.TryParse("1,2,3", NumberStyles.Any, CultureInfo.CurrentCulture, out result))
{
Console.WriteLine(result);
}
Oczekiwany wynik nie będzie niczym ... "1,2,3" nie powinien być analizowany jako podwójny. Jednak tak się dzieje. Według NET 2,0 MSDN documentation
AllowThousands wskazuje, że ciąg liczbowy może mieć grupy separatorów; na przykład oddzielając setki od tysięcy. Prawidłowe separatory grupy są wyznaczone przez NumberGroupSeparator i CurrencyGroupSeparator właściwości NumberFormatInfo i liczbę cyfr w każdej grupie jest określana przez NumberGroupSizes i CurrencyGroupSizes właściwości NumberFormatInfo.
Pozwolić na tysiące jest wliczony w NumberStyles.Any. NumberGroupSizes to 3 dla mojej kultury. Czy to tylko błąd w Double.Parse? wydaje się mało prawdopodobne, ale nie mogę zauważyć, co robię źle ...
To może być dlatego mam ważny rezultat podczas testowania [moja odpowiedź] (http://stackoverflow.com/questions/1014535/float-parse-doesnt-work-the -way-i-wanted/1014559 # 1014559) na podobne pytanie. – ChrisF
Po prostu ciekawa, ale jaka jest wartość wyniku? – Aaron
Myślę, że musiałbyś zapytać Microsoft, jeśli jest to błąd, ale dostaję takie samo zachowanie jak ty. Zawsze można zrobić "NumberStyles.Any^NumberStyles.AllowThousands", ale nie jest to zbyt użyteczne, jeśli spodziewasz się uzasadnionych grup składających się z trzech osób. – Jodrell