Maison > développement back-end > tutoriel php > Pourquoi l'ajout de virgule flottante PHP produit-il des résultats inattendus ?

Pourquoi l'ajout de virgule flottante PHP produit-il des résultats inattendus ?

Susan Sarandon
Libérer: 2024-12-17 00:58:25
original
690 Les gens l'ont consulté

Why Does PHP Floating-Point Addition Produce Unexpected Results?

Précision des nombres flottants PHP : pourquoi ce résultat inattendu ?

La gestion par PHP des nombres à virgule flottante peut produire des résultats surprenants. Considérez ce qui suit :

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

Au lieu du 0,01 attendu, la sortie est 0,0099999999999998. Cette particularité découle de la différence fondamentale entre l'arithmétique à virgule flottante et l'arithmétique des nombres réels.

Les nombres à virgule flottante, comme leur nom l'indique, représentent des nombres utilisant la notation binaire avec une précision finie. Par conséquent, il est impossible de représenter avec précision tous les nombres à l’aide de cette méthode. Cela peut conduire à des inexactitudes et des surprises comme celle ci-dessus.

Pour résoudre ce problème, on peut considérer ce qui suit :

  • Utilisez round($result, 2) sur le résultat pour arrondissez-le à 2 décimales.
  • Utilisez des nombres entiers. S'il s'agit de devises, stockez 35,00 $ sous la forme 3 500 et 34,99 $ sous la forme 3 499, puis divisez le résultat par 100.

Malheureusement, PHP ne dispose pas d'un type de données décimal dédié, comme dans de nombreux autres langages. Cela peut nuire à la précision lorsque vous travaillez avec des calculs financiers ou scientifiques.

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