Nó sẽ không thể đúng nếu x
là NaN
, kể từ khi so sánh trên NaN
là luôn luôn sai (có, thậm chí NaN == NaN
). Đối với tất cả các trường hợp khác (giá trị bình thường, giá trị không bình thường, vô số, số không), khẳng định này sẽ đúng.
Lời khuyên cho việc tránh ==
phao áp dụng cho các phép tính do số dấu phẩy động không thể biểu thị nhiều kết quả chính xác khi được sử dụng trong các biểu thức số học. Chuyển nhượng không phải là một phép tính và không có lý do gì mà chuyển nhượng sẽ mang lại một giá trị khác với giá trị ban đầu.
Đánh giá độ chính xác mở rộng phải là một vấn đề nếu tiêu chuẩn được tuân theo. Từ <cfloat>
kế thừa từ C [5.2.4.2.2.8] ( nhấn mạnh của tôi ):
Ngoại trừ việc gán và truyền (loại bỏ tất cả phạm vi và độ chính xác bổ sung) , các giá trị của các phép toán với toán hạng nổi và giá trị tuân theo các chuyển đổi số học thông thường và các hằng số trôi nổi được đánh giá theo định dạng có phạm vi và độ chính xác có thể lớn hơn yêu cầu của kiểu.
Tuy nhiên, như các ý kiến đã chỉ ra, một số trường hợp với một số trình biên dịch, tùy chọn xây dựng và mục tiêu nhất định có thể làm cho điều này nghịch lý.