Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Pengiraan Titik Terapung PHP Saya Tidak Tepat?

Mengapa Pengiraan Titik Terapung PHP Saya Tidak Tepat?

DDD
DDDasal
2024-12-21 14:45:10565semak imbas

Why Are My PHP Floating-Point Calculations Inaccurate?

Ketepatan Titik Terapung dalam PHP

Menghadapi hasil yang tidak dijangka apabila melakukan aritmetik titik terapung dalam PHP? Isu ini timbul disebabkan sifat semula jadi perwakilan titik terapung dalam komputer.

Nombor titik terapung ialah nombor binari dengan ketepatan terhad, yang membawa kepada percanggahan antara jangkaan matematik dan keputusan sebenar. Ini bermakna, tidak seperti aritmetik nombor nyata, aritmetik titik terapung mungkin menghadapi ketidaktepatan seperti (a b)-b != a untuk nilai tertentu.

Untuk menggambarkan, pertimbangkan kod PHP:

$a = '35';
$b = '-34.99';
echo ($a + $b);

Keluaran ialah 0.009999999999998, manakala seseorang menjangkakan 0.01. Sisihan ini berlaku kerana kedua-dua 34.99 dan 0.01 tidak boleh diwakili dengan tepat dalam binari. Sebaliknya, anggaran digunakan.

Untuk mengurangkan isu ini, beberapa pendekatan boleh digunakan:

  • Bundarkan hasil menggunakan bulat($result, 2) untuk mencapai nombor perpuluhan yang diingini tempat.
  • Gunakan integer dan bukannya terapung. Jika bekerja dengan mata wang, simpan nilai dalam sen (cth., $35.00 sebagai 3500) dan bahagikan hasilnya dengan 100.

Walaupun PHP tidak mempunyai jenis data perpuluhan, fungsi bulat dan teknik manipulasi integer menyediakan penyelesaian yang berkesan untuk pengendalian ketepatan titik terapung.

Atas ialah kandungan terperinci Mengapa Pengiraan Titik Terapung PHP Saya Tidak Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn