Thấu Hiểu "Tại Sao" - nói dối e blog

Thấu Hiểu "Tại Sao"

Vài hôm trước, tôi viết một bài blog về phép chuyển đổi qua lại giữa số nguyên và số thực dấu phẩy động. Những con số thật sự rất kỳ diệu! Lúc đó tôi nghĩ nguyên lý hẳn không quá phức tạp nên lười tìm hiểu kỹ.

Hôm nay, trong lúc chạy chương trình, tôi bất ngờ phát hiện một lỗi nghiêm trọng do kỹ thuật này gây ra. Có chỗ hoạt động đúng, có chỗ lại sai lệch hoàn toàn - kết quả chuyển đổi ra toàn số 0. Dù suy nghĩ rất nhiều cách giải thích nhưng vẫn không tài nào hiểu nổi. Cuối cùng đành phải ngồi nghiên cứu lại từ đầu cách thức kỹ thuật này vận hành. Đến lúc đó mới vỡ lẽ đây là vấn đề liên quan đến độ chính xác của phép toán dấu phẩy động. Dự án của chúng tôi sử dụng client d3d, và sau khi khởi tạo thiết bị d3d, độ chính xác trong các phép tính với kiểu double đã bị thay đổi mà không báo trước.

Qua trải nghiệm này, tôi nhận ra một chân lý bất biến: Muốn sử dụng thành thạo bất kỳ thủ thuật nào, trước tiên phải hiểu rõ bản chất “tại sao nó hoạt động”. Nếu chỉ áp dụng máy móc mà không nắm rõ nguyên lý, sớm muộn gì cũng gặp phải những lỗi “bí ẩn” như tôi vừa trải qua.

0%