Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Tetapan Ketepatan php.ini PHP Menjamin Pengiraan Kewangan Dua Digit Tepat?

Bolehkah Tetapan Ketepatan php.ini PHP Menjamin Pengiraan Kewangan Dua Digit Tepat?

Linda Hamilton
Linda Hamiltonasal
2024-11-06 12:27:03229semak imbas

 Can PHP's php.ini Precision Setting Guarantee Accurate Two-Digit Monetary Calculations?

Bolehkah Penyelesaian Ketepatan php.ini PHP Menangani Isu Titik Terapung?

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.

Kebolehpercayaan Penyelesaian

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.

Contoh Kegagalan

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

Nilai Php.ini.precision terbaik untuk Pengiraan Monetari Dua Digit

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.

Ujian Mudah

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.

Kemas kini

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!

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