Cái trang web này giải thích tại sao ngôn ngữ lập trình cho kết quả 0.1+0.2 = 0.30000000000000004 nè

https://0.30000000000000004.com/

TL:DR máy tính sử dụng hệ nhị phân thay vì thập phân và các phân số được biểu diễn dưới dạng phân số bội của hai. Điều này có nghĩa là bất kỳ số nào không vừa khít với một số nào đó như một phần tám cộng với một phần tư, tức là 0,3, sẽ có một chuỗi lặp lại vô hạn để xấp xỉ nó gần nhất có thể. Khi bạn chuyển đổi về số thập phân, nó phải làm tròn ở đâu đó, dẫn đến việc làm tròn số không chính xác.

>u/SEND_INVENTION_IDEAS (615 points – x2 helpful)

TL:DR2 máy tính sử dụng hệ nhị phân, cơ số 2. Nhiều số thập phân dễ dàng viết ra ở cơ số 10, nhưng lại bị trùng lặp ở cơ số 2, dẫn đến lỗi làm tròn phía sau hệ thống

>>u/DingoMcPhee (330 points)

TL:DR3 máy tính.

>>>u/lookslikebacon (218 points)

TL:DR4 toán

_____________________

Do bài mang tính chất học thuật, nên mình dịch cmt mang tính eli5 nhất, càng về sau càng sâu về ngôn ngữ và tư duy toán nên mình xin phép không dám dịch tiếp 

Mình sẽ lược dịch trang web giải thích ở đề bài:

“Khi bạn có một hệ cơ số 10 (như của chúng ta), nó chỉ có thể biểu thị các phân số sử dụng một thừa số nguyên tố của cơ số. Các thừa số nguyên tố của 10 là 2 và 5. Vì vậy, 1/2, 1/4, 1/5, 1/8 và 1/10 đều có thể được biểu diễn rõ ràng vì các mẫu số đều sử dụng các thừa số nguyên tố là 10. Ngược lại, 1 / 3, 1/6, 1/7 và 1/9 đều là các số thập phân lặp lại vì mẫu số của chúng sử dụng thừa số nguyên tố là 3 hoặc 7.

Trong hệ nhị phân (hoặc cơ số 2), thừa số nguyên tố duy nhất là 2, vì vậy bạn chỉ có thể biểu thị rõ ràng các phân số mà mẫu số chỉ có 2 là thừa số nguyên tố. Trong hệ nhị phân, 1/2, 1/4, 1/8 đều sẽ được biểu thị rõ ràng dưới dạng số thập phân, trong khi 1/5 hoặc 1/10 sẽ là số thập phân lặp lại. Vì vậy 0,1 và 0,2 (1/10 và 1/5), dễ dàng biểu diễn số thập phân trong hệ cơ số 10, thì bị lặp lại các số thập phân trong hệ cơ số 2 mà máy tính sử dụng. Khi bạn thực hiện phép toán trên các số thập phân lặp lại này, bạn sẽ nhận được phần thừa còn lại khi bạn chuyển đổi số cơ sở 2 (nhị phân) của máy tính thành biểu diễn cơ số 10 dễ đọc hơn cho con người.”

Phía dưới của trang web hiển thị kết quả phép tính 0.1 + 0.2 chuẩn đầu ra theo những ngôn ngữ lập trình khác nhau.

Leave a Reply

Your email address will not be published. Required fields are marked *