Nhà thờ Paris cháy đêm qua có thể do chập điện lỗi của những người thợ thi công !

Máy bay Boeing 737 đời mới bổ xung cảm biến góc tấn, nhưng lại không đào tạo kỹ phi công để ứng phó ngắt hệ thống tự động điều khiển phụ thuộc cảm biến này.

Một hãng xe ô tô xịn của Đức, cách đây gần 25 năm đã áp dụng rất nhiều vi điều khiển để đo đạc cảm biến trên xe như tốc độ quay từng bánh xe, nhiệt độ buồng đốt, nhiệt độ má phanh...thay vì bắt lái xe phải tự cảm nhận hay lái theo kinh nghiệm
Trong vài lô hàng bán ra đầu tiên, họ thấy rằng thỉnh thoảng nhiệt độ má phanh tăng rất cao, nhưng hệ thống điều khiển gần như phản ứng rất phập phù, tai nạn chết người đã xảy ra, hãng phải bồi thường khá nhiều tiền.

Trên phương diện của một tay Lập trình viên : 

Sau nhiều tháng ra soát, kiểm tra lại code toàn bộ hệ thống vi điều khiển được viết bằng C, họ mới thấy rằng các lập trình thường hay so sánh dữ liệu số dạng float với nhau, ví dụ như:

if (brake_temp >= threshold ) {
doSomething();
}

Số thập phân dấu phẩy động có cơ chế làm trong (round), do đó 2 số thập phân tưởng như bằng nhau, nhưng thực tế chúng lại khác nhau một tý chút và phép so sánh luôn trả về FALSE !

Mất mát quá lớn, thế nên những lập trình viên Đức lập hẳn một trang web chỉ để cảnh báo về việc sử dụng số thập phân dấu phẩy động

https://floating-point-gui.de/errors/comparison/

Đừng đùa, chỉ một bất cẩn khi dùng floating point number đôi khi bạn khiến công ty thuê bạn gia công phải bồi thường hàng trăm triệu đô, và mất rất nhiều tiền, thời gian để ra soát, tìm ra nguyên nhân. Đôi khi tìm ra bạn, bạn đã yên vị ở một công ty gia công mới, mức lương cao hơn những tiếp tục tạo ra những dòng code tồi tệ tiềm tàng. Ad kính mong các bạn developer hãy chịu khó đọc, và học hỏi kiến thức trên mạng nhiều hơn, ghi chép lại thay vì chỉ nhăm nhăm dùng sẵn framework.

Khóa học lập trình đào tạo học viên chuyên nghiệp tại Techmaster