Những vấn đề với tính toán dấu chấm động

Câu chuyện của chúng ta bắt đầu với đoạn chương trình Visual Basic (VB) sau: Dim a As Double, b As Double, s As Double a = b = s = If s = a + b Then MsgBox "True" Else MsgBox "False" End If Khi chạy, chúng ta sẽ nhận được thông báo sau: Rõ ràng s = a+b vậy mà chương trình lại báo "False" (sai). Phải chăng đó là lỗi của Visual Basic? Bạn nào có ý nghĩ như vậy hãy thử lại với Java - một ngôn ngữ khác hẳn và hoàn toàn không. | Những vấn đề với tính toán dấu chấm động Câu chuyện của chúng ta bắt đầu với đoạn chương trình Visual Basic VB sau Dim a As Double b As Double s As Double a b s If s a b Then MsgBox True Else MsgBox False End If Khi chạy chúng ta sẽ nhận được thông báo sau Rõ ràng s a b vậy mà chương trình lại báo False sai . Phải chăng đó là lỗi của Visual Basic Bạn nào có ý nghĩ như vậy hãy thử lại với Java - một ngôn ngữ khác hẳn và hoàn toàn không phải do Microsoft cung cấp - sẽ thấy lỗi đó lặp lại giống hệt. Trở về với đoạn chương trình VB ban đầu nếu đổi các biến a b s thành kiểu Currency thì chương trình lại chạy đúng như mong đợi tức là đưa ra thông báo True . Dài dòng như vậy để các bạn thấy gốc rễ của vấn đề nằm ở đặc điểm của số dấu chấm động nhị phân và các phép toán liên quan tới chúng. Không ít lập trình viên chịu bó tay không lý giải được hiện tượng trên. Điều khá ngạc nhiên là các số dấu chấm động hiện diện ở khắp mọi nơi trong các hệ thống máy tính vậy mà nhiều người vẫn không biết hay không quan tâm tới chúng. Hầu hết tất cả các ngôn ngữ lập trình đều có kiểu dữ liệu dấu chấm động các hệ thống điện toán từ máy PC đến siêu máy tính đều có bộ gia tốc dấu chấm động hầu hết các trình biên dịch đều phải thực hiện việc dịch các thuật toán dấu chấm động một các thường xuyên và hầu như tất cả các hệ điều hành đều phải đối mặt với những trường hợp ngoại lệ của dấu chấm động chẳng hạn bị tràn bộ nhớ . Một số dấu chấm động là cách biểu diễn cho một số trong một tập con các số hữu tỷ và thường dùng trong máy tính để biểu diễn gần đúng một số thực bất kỳ. Một cách cụ thể hơn số dấu chấm động được thể hiện như một số nguyên hay số dấu chấm tĩnh phần có nghĩa hay phần định trị nhân với một cơ số thường là cơ số 2 đối với máy tính lũy thừa số mũ nguyên nào đó. a m X be Trong một hệ thống như vậy chúng ta chọn cơ số b và độ chính xác p số chữ số được lưu . m phần có nghĩa hay phần định trị là một số có p chữ số được biểu diễn dưới dạng mỗi số là một số .

Không thể tạo bản xem trước, hãy bấm tải xuống
TÀI LIỆU MỚI ĐĂNG
91    77    5    16-05-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.