2012-10-17 39 views
10

Khi tôi cố gắng dòng này:float.Parse không thành công trên thập phân và dấu phẩy

float f = float.Parse(val, System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowThousands); 

nơi val là một chuỗi thiết lập để "5,267" mà không có dấu ngoặc kép, tôi nhận được lỗi này:

FormatException: Unknown char:. System.Double.Parse (System.String s, NumberStyles phong cách, cung cấp IFormatProvider) System.Single.Parse (System.String s, NumberStyles phong cách)

Vì vậy, tôi đã cố gắng thay đổi dấu thập phân với một dấu phẩy, như: 5267 và đã nhận lỗi này:

FormatException: Unknown char:, System.Double.Parse (System.String s, NumberStyles phong cách, cung cấp IFormatProvider) System.Single.Parse (System.String s, NumberStyles phong cách)

Tôi .... không .... hiểu. Theo như tôi có thể nói tôi đang làm điều này đúng. Đó là một điều đơn giản, vậy tại sao nó lại khiến tôi đau buồn như vậy?

+1

Tại sao không chỉ thực hiện 'float.Parse (yourValue);'? Tôi chỉ cần chạy nó và không có lỗi với dấu phẩy hoặc dấu thập phân – mlorbetske

+1

'NumberStyles.Any' hoạt động tốt cho tôi, bạn đã thử chưa? – Adam

+0

Có thể không phải '.' cũng không', 'là dấu thập phân hoặc dấu phân cách hàng nghìn trong văn hóa hiện tại của bạn không? –

Trả lời

11

Phân tích cú pháp là nhận thức về văn hóa. Nếu văn hóa địa phương của bạn có các yêu cầu khác nhau, thì bạn có thể muốn chuyển một nền văn hóa hoặc nhà cung cấp định dạng khác. Hãy thử sử dụng CultureInfo.InvariantCulture. Bạn sẽ không cần tùy chọn thập phân nếu bạn làm.

float f = float.Parse(val, 
         System.Globalization.NumberStyles.AllowThousands, 
         CultureInfo.InvariantCulture); 
+1

Đó là cái tôi cần InvariantCulture. Cảm ơn Matt. – damocles

+0

Đây là câu trả lời những gì tôi đã tìm kiếm! Cám ơn! –

Các vấn đề liên quan