Perkaitan Aritmetik Titik Terapung
Aritmetik titik terapung digunakan secara meluas dalam pengkomputeran saintifik, namun persoalan pelik timbul: Adakah ia bersekutu untuk penambahan dan pendaraban? Pertanyaan yang kelihatan mudah ini mempunyai kerumitan tersembunyi.
Dalam bidang penambahan titik terapung, persekutuan tidak selalu dijamin. Contoh yang menarik ialah kod berikut:
cout << ((0.7 + 0.2 + 0.1) == 1) << endl; //output is 0 cout << ((0.7 + 0.1 + 0.2) == 1) << endl; //output is 1
Kami terkejut, kedua-dua pernyataan ini menghasilkan hasil yang berbeza. Mengapa demikian?
Penjelasan terletak pada pengehadan perwakilan titik terapung. Nombor titik terapung disimpan sebagai anggaran nilai sebenar, memperkenalkan tahap ketidaktepatan. Apabila menambah berbilang nilai titik terapung, susunan operasi adalah penting kerana ralat terkumpul dan pembundaran.
Seperti kertas standard yang dirujuk, "Apa Yang Setiap Ahli Sains Komputer Patut Tahu tentang Aritmetik Titik Terapung," dengan tepat menyatakan:
"Disebabkan ralat pembulatan, undang-undang bersekutu algebra tidak semestinya memegang untuk titik terapung nombor."
Atas ialah kandungan terperinci Adakah Bersekutu Aritmetik Titik Terapung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!