Memahami Perbandingan Titik Terapung dalam C
Apabila membandingkan nilai titik terapung dalam C , adalah penting untuk mengetahui potensi ketidaktepatan disebabkan oleh ketepatan terhad. Dalam coretan kod yang disediakan, output yang tidak dijangka "1 adalah betul" diperhatikan apabila membandingkan apungan a dan b dengan pemalar 0.7 dan 0.5, masing-masing.
Punca Output Tidak Dijangka:
Isu ini timbul kerana perkara berikut sebab:
Penyelesaian:
Untuk mendapatkan output yang dijangkakan, anda boleh sama ada:
Kod dengan Output Jangkaan:
int main() { double a = 0.7; double b = 0.5; if (a < 0.7) { if (b < 0.5) printf("2 are right"); else printf("1 is right"); } else printf("0 are right"); }
Dalam kod yang diperbetulkan ini, perbandingan a dan b kepada beregu masing-masing memastikan ketepatan yang tepat, menghasilkan output yang dijangkakan "0 adalah betul."
Atas ialah kandungan terperinci Mengapa Membandingkan Terapung dalam C Kadangkala Menghasilkan Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!