Pengiraan titik terapung boleh menjadi tidak tepat kerana perwakilan binari kebanyakan pecahan. Tetapan php.ini untuk ketepatan membolehkan anda menentukan bilangan digit yang PHP mengira nilai titik terapung.
Soalan 1: Bolehkah penyelesaian boleh dipercayai untuk pengiraan kewangan dua digit yang tepat?
Jawapan 1: Tidak. Tetapan ketepatan php.ini tidak menjamin pengiraan dua digit yang tepat, kerana panjang ketepatan mungkin meningkat semasa pengiraan.
Soalan 2: Bolehkah anda berikan contoh di mana penyelesaian gagal?
Contoh:
ini_set('precision', 8); $a = 5.88; // cost per kg $q = 2.49; // quantity purchased (2.49 kg) $b = $a * 0.01; // 10% discount on first kg echo ($a * $q) - $b; // result not precisely two digits
Soalan 3: Apakah nilai php.ini.precision yang sesuai untuk dua digit pengiraan kewangan?
Jawapan 3: Menggunakan ketepatan php.ini untuk pengiraan kewangan tidak disyorkan. Pertimbangkan penyelesaian alternatif seperti bcmmath atau number_format.
Contoh Kod:
ini_set('precision', 20); // set to 20 $a = 342349.23; $b = 341765.07; echo $a - $b, PHP_EOL; echo floatval(round($a - $b, 2)), PHP_EOL; echo number_format($a - $b, 2), PHP_EOL; echo bcsub($a, $b, 2), PHP_EOL;
Output:
584.15999999997438863 584.15999999999996817 // round is not reliable 584.16 584.15 // bcsub is more precise with precision=20
Kesimpulan:
Pergantungan pada penyelesaian ketepatan php.ini tidak boleh dipercayai untuk pengiraan dua digit yang tepat. Pertimbangkan untuk menggunakan bcmmath atau number_format untuk pengiraan kewangan yang tepat.
Soalan 1: Adakah penyelesaian gagal untuk nombor antara 0 dan 999999.99?
Jawapan 1: Ujian yang lengkap adalah tidak praktikal kerana bilangan kombinasi yang banyak. Walau bagaimanapun, ujian mudah dengan 0.19 0.16 ... 0.01 menghasilkan keputusan yang tidak dijangka (1.0408341E-17) dengan ketepatan ditetapkan kepada 8, menunjukkan bahawa penyelesaian itu tidak boleh dipercayai sepenuhnya.
Soalan 2: Bagaimanakah kita boleh menganggarkan apabila penyelesaian akan gagal?
Jawapan 2: Walaupun formula matematik wujud, ia boleh menjadi rumit dan tidak selalunya praktikal untuk menentukan titik kegagalan.
Atas ialah kandungan terperinci Bolehkah Tetapan Ketepatan php.ini PHP Menjamin Pengiraan Kewangan Dua Digit Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!