Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Nombor Titik Terapung PHP Tidak Tepat, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Nombor Titik Terapung PHP Tidak Tepat, dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Lepaskan: 2024-12-31 14:09:15
asal
1005 orang telah melayarinya

Why Are PHP Floating-Point Numbers Inaccurate, and How Can I Fix It?

Ketepatan Nombor Terapung PHP: Menyahmistikan Yang Tidak Dijangka

Dalam PHP, nombor titik terapung boleh menghasilkan keputusan yang tidak dijangka disebabkan sifat semula jadi binari aritmetik. Tidak seperti nombor nyata, apungan binari diwakili dengan ketepatan terhad, membawa kepada anggaran dan potensi ketidaktepatan.

Pertimbangkan contoh:

$a = '35';
$b = '-34.99';
echo ($a + $b);
Salin selepas log masuk

Ini menghasilkan 0.009999999999998 dan bukannya 0.01 yang dijangkakan. Ini kerana 34.99 dan 0.01 tidak boleh diwakili dengan tepat dalam binari, menghasilkan perwakilan anggaran.

Untuk mengatasi isu ini, pertimbangkan alternatif berikut:

  • Membundarkan Keputusan : Gunakan bulat($result, 2) untuk membundarkan keputusan kepada dua perpuluhan tempat.
  • Menggunakan Integer: Untuk pengiraan mata wang, simpan nilai sebagai integer. Sebagai contoh, nyatakan $35.00 sebagai 3500 dan $34.99 sebagai 3499, dan bahagikan hasilnya dengan 100 selepas pengiraan.

Perlu diperhatikan bahawa PHP tidak mempunyai jenis data perpuluhan khusus yang terdapat dalam bahasa lain, yang berpotensi meningkatkan ketepatan dalam senario tertentu. Walau bagaimanapun, dengan memahami had aritmetik titik terapung, pembangun boleh mengurangkan keputusan yang tidak dijangka dan memastikan pengiraan yang tepat.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan