Ini tidak akan benar jika x
ini NaN
, karena perbandingan pada NaN
yang selalu salah (ya, bahkan NaN == NaN
). Untuk semua kasus lain (nilai normal, nilai subnormal, infinities, nol) pernyataan ini akan benar.
Saran untuk menghindari ==
mengapung berlaku untuk perhitungan karena angka floating point tidak dapat mengekspresikan banyak hasil persis ketika digunakan dalam ekspresi aritmatika. Tugas bukanlah perhitungan dan tidak ada alasan bahwa tugas akan menghasilkan nilai yang berbeda dari yang asli.
Evaluasi presisi yang diperluas harus menjadi masalah jika standar diikuti. Dari <cfloat>
diwarisi dari C [5.2.4.2.2.8] ( penekanan milik saya ):
Kecuali untuk penugasan dan pemeran (yang menghapus semua jangkauan ekstra dan presisi) , nilai operasi dengan operan mengambang dan nilai yang tunduk pada konversi aritmatika biasa dan konstanta mengambang dievaluasi ke format yang jangkauan dan ketelitiannya mungkin lebih besar dari yang dipersyaratkan oleh Tipe.
Namun, seperti yang ditunjukkan oleh komentar, beberapa kasus dengan penyusun, opsi bangun, dan target tertentu dapat menjadikan ini salah secara paradoks.