Tôi muốn biết nếu tôi đang thiếu một cái gì đó hay không ... Tôi đang chạy theo tiêu chuẩn văn hóa Anh vĩ đại.Double.TryParse() bỏ qua NumberFormatInfo.NumberGroupSizes?
Double result = 0;
if (Double.TryParse("1,2,3", NumberStyles.Any, CultureInfo.CurrentCulture, out result))
{
Console.WriteLine(result);
}
Sản lượng dự kiến sẽ không là gì ... "1,2,3" không được phân tích cú pháp thành gấp đôi. Tuy nhiên nó có. Theo .NET 2.0 MSDN documentation
AllowThousands Cho biết chuỗi số có thể có nhóm dấu tách; ví dụ, tách hàng trăm từ hàng nghìn. Ký tự phân cách nhóm hợp lệ được xác định bởi các thuộc tính NumberGroupSeparator và CurrencyGroupSeparator của NumberFormatInfo và số chữ số trong mỗi nhóm được xác định bởi thuộc tính NumberGroupSizes và CurrencyGroupSizes của NumberFormatInfo.
Cho phép hàng nghìn được bao gồm trong NumberStyles.Any. NumberGroupSizes là 3 cho văn hóa của tôi. Đây có phải chỉ là một lỗi trong Double.Parse không? có vẻ không chắc nhưng tôi không thể phát hiện ra những gì tôi đang làm sai ....
Đây có thể là lý do tại sao tôi nhận được một kết quả hợp lệ khi kiểm tra [câu trả lời của tôi] (http://stackoverflow.com/questions/1014535/float-parse-doesnt-work-the -way-i-wanted/1014559 # 1014559) về một câu hỏi tương tự. – ChrisF
Chỉ tò mò, nhưng giá trị của kết quả là gì? – Aaron
Tôi nghĩ rằng bạn sẽ phải hỏi Microsoft nếu lỗi của nó nhưng, tôi nhận được hành vi tương tự như bạn. Luôn luôn có thể làm 'NumberStyles.Any^NumberStyles.AllowThousands' nhưng đó không phải là sử dụng nhiều nếu bạn đang mong đợi các nhóm hợp pháp của ba. – Jodrell