Tôi nhận thấy một hành vi lạ khi nhân các giá trị thập phân trong C#. Hãy xem xét các phép toán nhân sau đây:C# số thập phân hành vi lạ
1.1111111111111111111111111111m * 1m = 1.1111111111111111111111111111 // OK
1.1111111111111111111111111111m * 2m = 2.2222222222222222222222222222 // OK
1.1111111111111111111111111111m * 3m = 3.3333333333333333333333333333 // OK
1.1111111111111111111111111111m * 4m = 4.4444444444444444444444444444 // OK
1.1111111111111111111111111111m * 5m = 5.5555555555555555555555555555 // OK
1.1111111111111111111111111111m * 6m = 6.6666666666666666666666666666 // OK
1.1111111111111111111111111111m * 7m = 7.7777777777777777777777777777 // OK
1.1111111111111111111111111111m * 8m = 8.888888888888888888888888889 // Why not 8.8888888888888888888888888888 ?
1.1111111111111111111111111111m * 9m = 10.000000000000000000000000000 // Why not 9.9999999999999999999999999999 ?
Điều tôi không thể hiểu là hai trường hợp trên cùng. Làm thế nào là có thể?
Chào mừng bạn đến với thế giới tuyệt vời của lỗi chính xác. – christopher
Đây không phải là lỗi chính xác, nó chỉ làm tròn. –
Đây là một câu đố toán học cho bạn: '10/9 = 1.111…'; '1.111… * 9 = 9,999… ≠ 10'. ;) – stakx