Kaitan dalam Aritmetik Titik Terapung
Aritmetik titik terapung digunakan untuk mewakili nombor nyata dalam pengkomputeran. Disebabkan ralat pembundaran dalaman, perkaitan operasi titik terapung boleh dipersoalkan.
Masalah:
Pertimbangkan kod berikut yang menambah tiga nombor titik terapung dan membandingkan jumlah mereka kepada 1:
cout << ((0.7 + 0.2 + 0.1) == 1) << endl; //output is 0 cout << ((0.7 + 0.1 + 0.2) == 1) << endl; //output is 1
Mengapa ungkapan ini menghasilkan berbeza keputusan?
Jawapan:
Tambahan titik terapung tidak dijamin bersekutu. Menukar susunan nombor yang ditambah boleh mengubah keputusan kerana ralat pembundaran.
Menurut kertas kerja "Apa Yang Setiap Saintis Komputer Patut Tahu tentang Aritmetik Titik Terapung," malah kurungan dalam ungkapan boleh memberi kesan kepada keputusan . Sebagai contoh, ungkapan berikut menghasilkan nilai yang berbeza:
(x+y)+z x+(y+z)
di mana x = 1e30, y = -1e30 dan z = 1. Ungkapan pertama menilai kepada 1, manakala ungkapan kedua menilai kepada 0.
Atas ialah kandungan terperinci Mengapa Penambahan Titik Terapung Menghasilkan Keputusan Berbeza Bergantung pada Susunan Operasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!