Maison > développement back-end > tutoriel php > Pourquoi les nombres à virgule flottante PHP sont-ils inexacts et comment puis-je y remédier ?

Pourquoi les nombres à virgule flottante PHP sont-ils inexacts et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-31 14:09:15
original
1005 Les gens l'ont consulté

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

Précision des nombres flottants PHP : démystifier l'inattendu

En PHP, les nombres à virgule flottante peuvent donner des résultats inattendus en raison de la nature inhérente du binaire arithmétique. Contrairement aux nombres réels, les flottants binaires sont représentés avec une précision limitée, ce qui conduit à des approximations et à des inexactitudes potentielles.

Prenons l'exemple :

$a = '35';
$b = '-34.99';
echo ($a + $b);
Copier après la connexion

Cela génère 0,0099999999999998 au lieu du 0,01 attendu. En effet, 34,99 et 0,01 ne peuvent pas être représentés avec précision en binaire, ce qui donne une représentation approximative.

Pour surmonter ce problème, envisagez les alternatives suivantes :

  • Arrondir le résultat : Utilisez round($result, 2) pour arrondir le résultat à deux décimales lieux.
  • Utilisation d'entiers : Pour les calculs de devises, stockez les valeurs sous forme d'entiers. Par exemple, représentez 35,00 $ par 3 500 et 34,99 $ par 3 499, et divisez le résultat par 100 après le calcul.

Il convient de noter que PHP ne dispose pas d'un type de données décimal dédié que l'on trouve dans d'autres langages, ce qui pourrait potentiellement améliorer précision dans des scénarios spécifiques. Cependant, en comprenant les limites de l'arithmétique à virgule flottante, les développeurs peuvent atténuer les résultats inattendus et garantir des calculs précis.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal