Cách thích hợp để chuyển đổi từ chuỗi ký hiệu khoa học như "1.234567E-06" thành biến số dấu chấm động bằng C#?Chuyển đổi từ chuỗi ký hiệu khoa học thành float trong C#
26
A
Trả lời
50
Double.Parse("1.234567E-06", System.Globalization.NumberStyles.Float);
11
Cũng xem xét sử dụng
Double.TryParse("1.234567E-06", System.Globalization.NumberStyles.Float, out MyFloat);
này sẽ đảm bảo rằng MyFloat
được thiết lập để đánh giá 0 nếu vì bất cứ lý do nào, việc chuyển đổi có thể không được thực hiện. Hoặc bạn có thể bọc ví dụ Double.Parse()
trong một khối Try..Catch
và đặt MyFloat
thành giá trị bạn chọn khi phát hiện ngoại lệ.
+17
Bạn không muốn dựa vào MyFloat là 0 để biểu thị một chuyển đổi không thành công, bạn muốn dựa vào giá trị trả về bool. – Carl
Ngay trên Will. Cám ơn. – odbasta
Sẽ không hoạt động nếu dấu phân cách thập phân của văn hóa hiện tại không phải là '.'. Vì vậy, cách tiếp cận luôn làm việc là sử dụng 'NumberStyles.Any' hoặc (tốt hơn) force' InvariantCulture': 'Double.Parse (" 1.234567E-06 ", NumberStyles.Float, CultureInfo.InvariantCulture);' –
Lưu ý rằng nếu bạn tack a. ToString() khi kết thúc thủ tục này gọi nó sẽ trả về ký pháp khoa học chứ không phải một chuỗi các chữ số duy nhất. Tôi cần phải bao gồm một tham số chuỗi định dạng ("0.0000") trong cuộc gọi .ToString() để làm cho định dạng nổi chính xác. –