Rumah >pembangunan bahagian belakang >C++ >Mengapa Pengiraan Titik Terapung Menghasilkan 1.9999999999999996 Daripada 2.0?
Mengendalikan Percanggahan Ketepatan dalam Perwakilan Titik Terapung
Apabila bekerja dengan nombor titik terapung, had ketepatan disebabkan perwakilan dalaman mereka boleh menyebabkan hasil yang tidak dijangka. Pertimbangkan isu berikut:
Dalam atur cara, pembolehubah bernama mw dimulakan dengan nilai 4.6, diperoleh dengan menukar rentetan dengan nilai ini kepada dua kali ganda. Walau bagaimanapun, apabila digunakan dalam pengiraan untuk menentukan bilangan lajur, hasilnya keluar sebagai 1.9999999999999996 dan bukannya 2.0 yang dijangkakan.
Percanggahan ini timbul kerana perwakilan dalaman nombor titik terapung adalah anggaran. Dalam kes ini, 4.6 tidak boleh disimpan dengan tepat sebagai apungan, menyebabkan nilai yang berbeza sedikit sebanyak 4.5999999999999996 digunakan dalam pengiraan.
Untuk menangani isu ini, adalah penting untuk menyedari bahawa perbandingan kesamaan yang ketat dengan terapung- nombor mata tidak boleh dipercayai. Sebaliknya, pertimbangkan untuk menggunakan julat nilai yang boleh diterima untuk menentukan sama ada hasil adalah cukup hampir dengan hasil yang dijangkakan.
Selain itu, ambil perhatian bahawa sesetengah nilai tidak boleh diwakili dengan tepat sebagai nombor titik terapung. Untuk mendapatkan maklumat lanjut, rujuk sumber yang komprehensif seperti "Apa Yang Setiap Ahli Sains Komputer Patut Tahu Mengenai Aritmetik Titik Terapung" dan "Membanding Nombor Titik Terapung." Dengan memahami batasan ini dan menggunakan teknik yang sesuai, anda boleh mengurangkan masalah ketepatan apabila menggunakan nombor titik terapung.
Atas ialah kandungan terperinci Mengapa Pengiraan Titik Terapung Menghasilkan 1.9999999999999996 Daripada 2.0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!