Tôi có một giá trị float: 12345,6489làm tròn không đúng phao khi sử dụng ToString ("F1")
Khi tôi định dạng này sử dụng:
(12345.6489f) ToString ("F1")
Sau đó, tôi nhận được một kết quả của
12345,7
Nhưng điều này là không chính xác, vì nó phải được 12.345,6.
Có ai hiểu tại sao điều này có thể xảy ra không? Một gợi ý khác là việc tạo gấp đôi trước khi định dạng của tôi trả lại kết quả chính xác và nếu giá trị float của tôi nhỏ hơn một chút, ví dụ 1234.6489, thì tôi cũng nhận được kết quả chính xác.
@DavidStratton: 'Double' cũng không chính xác và sẽ mang lại những điều kỳ lạ tương tự. Họ chỉ có các phạm vi khác nhau và các phạm vi khác nhau. –
@JonSkeet - cảm ơn vì đã làm rõ! Tôi đã xóa nhận xét. – David
Single.ToString đang làm điều gì đó rất kỳ quặc. Tôi nghĩ bạn sẽ cần phải nhìn vào IL. Tài liệu (http://msdn.microsoft.com/en-us/library/f71z6k0c.aspx) nói "Theo mặc định, giá trị trả lại chỉ chứa 7 chữ số chính xác mặc dù tối đa 9 chữ số được duy trì trong nội bộ" nhưng tôi ' m chắc chắn tôi không có ý tưởng đó có nghĩa là gì. –