Maison > Article > développement back-end > Le paramètre de précision php.ini de PHP peut-il garantir des calculs monétaires précis à deux chiffres ?
Les calculs en virgule flottante peuvent être imprécis en raison des représentations binaires de la plupart des fractions. Le paramètre de précision php.ini vous permet de spécifier le nombre de chiffres sur lequel PHP calcule les valeurs à virgule flottante.
Question 1 : Le peut-on s'appuyer sur une solution de contournement pour des calculs monétaires précis à deux chiffres ?
Réponse 1 : Non. Le paramètre de précision php.ini ne garantit pas des calculs précis à deux chiffres, car la longueur de précision peut augmenter pendant calculs.
Question 2 : Pouvez-vous fournir un exemple d'échec de la solution de contournement ?
Exemple :
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
Question 3 : Quelle valeur php.ini.precision convient aux calculs monétaires à deux chiffres calculs monétaires ?
Réponse 3 : L'utilisation de la précision php.ini pour les calculs financiers n'est pas recommandée. Envisagez des solutions alternatives comme bcmmath ou number_format.
Exemple de code :
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;
Sortie :
584.15999999997438863 584.15999999999996817 // round is not reliable 584.16 584.15 // bcsub is more precise with precision=20
Conclusion :
Le recours à la solution de contournement de précision php.ini n'est pas fiable pour des calculs précis à deux chiffres. Pensez à utiliser bcmmath ou number_format pour des calculs financiers précis.
Question 1 : La solution de contournement échouera-t-elle pour les nombres compris entre 0 et 999999,99 ?
Réponse 1 : Un test complet n'est pas pratique en raison du grand nombre de combinaisons. Cependant, un simple test avec 0,19 0,16 ... 0,01 produit un résultat inattendu (1.0408341E-17) avec une précision réglée sur 8, ce qui suggère que la solution de contournement n'est pas entièrement fiable.
Question 2 : Comment pouvons-nous estimer quand la solution de contournement échouera ?
Réponse 2 : Bien que des formules mathématiques existent, elles peuvent être complexes et pas toujours pratiques pour déterminer les points de défaillance.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!