มันจะไม่เป็นจริงถ้าx
เป็นNaN
เพราะการเปรียบเทียบNaN
นั้นเป็นเท็จเสมอ (ใช่แม้กระทั่งNaN == NaN
) สำหรับกรณีอื่นทั้งหมด (ค่าปกติค่า subnormal, infinities, ศูนย์) การยืนยันนี้จะเป็นจริง
คำแนะนำสำหรับการหลีกเลี่ยง==
การลอยตัวนำไปใช้กับการคำนวณเนื่องจากตัวเลขจุดลอยตัวไม่สามารถแสดงผลลัพธ์จำนวนมากได้อย่างแม่นยำเมื่อใช้ในการแสดงออกทางคณิตศาสตร์ การมอบหมายไม่ใช่การคำนวณและไม่มีเหตุผลที่การมอบหมายจะให้คุณค่าที่แตกต่างจากต้นฉบับ
การประเมินแบบขยายที่แม่นยำควรเป็นแบบที่ไม่มีปัญหาหากปฏิบัติตามมาตรฐาน จากการ<cfloat>
สืบทอดจาก C [5.2.4.2.2.8] ( เหมืองที่เน้น ):
ยกเว้นการมอบหมายและการส่ง (ซึ่งลบช่วงพิเศษและความแม่นยำทั้งหมด)ค่าของการดำเนินการที่มีตัวถูกดำเนินการลอยตัวและค่าอยู่ภายใต้การแปลงเลขคณิตปกติและค่าคงตัวลอยจะถูกประเมินเป็นรูปแบบที่ช่วงและความแม่นยำอาจมากกว่า ชนิด
อย่างไรก็ตามในขณะที่ความคิดเห็นได้ชี้ให้เห็นบางกรณีที่มีคอมไพเลอร์บางตัวสร้างตัวเลือกและเป้าหมายอาจทำให้เท็จนี้ขัดแย้ง