2010-06-17 43 views
5

Tôi đang gặp một vấn đề với đoạn mã sau:chuỗi nổi chuyển đổi - thập phân tách

string latString = "50.09445"; 
float lat = Convert.ToSingle(latString); 

Lệnh thứ hai ném một ngoại lệ FormatException. Tôi biết rằng vấn đề là cài đặt văn hóa tôi đang sử dụng (cs-CZ) sử dụng dấu phẩy như dấu phân cách thập phân và chuỗi này chứa dấu thập phân thay thế.

Có cách nào dễ dàng để "bỏ qua" cài đặt văn hóa và luôn sử dụng dấu thập phân cho chuyển đổi không? Hoặc tôi nên tránh vấn đề bằng cách kiểm tra chuỗi đầu tiên và thay thế dấu phẩy bằng dấu thập phân?

Trả lời

19

Sử dụng CultureInfo.InvariantCulture

float lat = Convert.ToSingle("50.09445", CultureInfo.InvariantCulture); 
2

Thử Convert.ToSingle(string, IFormatProvider) overload thay vào đó, và vượt qua nó văn hóa bất biến (hoặc bất kỳ CultureInfo bạn muốn được sử dụng thay vì):

float lat = Convert.ToSingle(latString, CultureInfo.InvariantCulture); 
2
string latString = "50.09445"; 
float lat = float.Parse(latString, CultureInfo.InvariantCulture); 
1
Single.Parse(latString, System.Globalization.CultureInfo.InvariantCulture); 
Các vấn đề liên quan