Lỗi DEC2HEX trong Excel 2010?
Liệu có phải Excel 2010 DEC2HEX là một lỗi như ví dụ dưới đây không?
Đoạn mã sau đáng lẽ phải chuyển đổi giá trị thập phân 33.0 sang hệ thập lục phân 0x21. Nhưng nó lại chuyển thành 0x20. Làm tròn xuống 33.0 sẽ khắc phục được vấn đề, nhưng điều đó không hợp lý nếu xét đến dữ liệu đầu vào như sau:
=DEC2HEX((0.48-0.15)*100)
Điều này cho bạn kết quả 0x20.
Tuy nhiên, cả hai kết quả dưới đây đều cho ra 0x21:
=DEC2HEX(0.33*100)
=DEC2HEX(TRUNC((0,48-0,15)*100))
Ở bất kỳ đâu, kể cả phần "Đánh giá công thức", đều không có dấu hiệu nào cho thấy (0.48-0.15)*100 được coi là nhỏ hơn 33.0000000000000, chưa kể việc cắt bớt một số nhỏ hơn 33.0000000000000 không nên cho kết quả là 33, hay 0x21 ngay từ đầu. Tại sao DEC2HEX lại về cơ bản chuyển đổi 33 thành 0x20?
Windows 7, SP 1
Văn phòng 2010
Tôi chưa thử trên các phiên bản Office khác. Tôi hy vọng vấn đề này đã được "sửa" rồi, trừ khi tôi bỏ sót điều gì đó và nhầm lẫn rằng đây là một lỗi.
Trả lời:
Ngoài bài đăng của JP RONSE, đây không phải là vấn đề của Excel mà là lỗi dấu phẩy động theo tiêu chuẩn.
Vui lòng xem liên kết bên dưới để biết thêm thông tin về vấn đề này.
https://support.microsoft.com/en-us/help/214118/how-to-correct-rounding-errors-in-floating-point-arithmetic
https://support.microsoft.com/en-us/help/78113/floating-point-arithmetic-may-give-inaccurate-results-in-excel
https://support.microsoft.com/en-us/help/214118/how-to-correct-rounding-errors-in-floating-point-arithmetic
https://blogs.office.com/en-us/2008/04/10/understanding-floating-point-precision-aka-why-does-excel-give-me-seemingly-wrong-answers/?eu=true
Comments
Post a Comment