Solutions aux opérations en virgule flottante inexactes sous PHP

墨辰丷
Libérer: 2023-03-28 15:38:02
original
1629 Les gens l'ont consulté

Cet article présente principalement la solution au fonctionnement inexact de la virgule flottante sous PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Vous en faites un récemment ? Le problème de l'addition et de la soustraction est que les opérations en virgule flottante sont inexactes. Il semble vrai que les langages interprétés ont des problèmes avec les opérations en virgule flottante.

Premier coup d'oeil à un morceau de code :

<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);
Copier après la connexion

La valeur imprimée est en fait booléenne fausse

Pourquoi cela ? Le manuel PHP contient le message d'avertissement suivant pour les nombres à virgule flottante :

Avertissement

Flottant précision du point

Apparemment, des fractions décimales simples comme 0,1 ou 0,7 ne peuvent pas être converties au format binaire interne sans perdre un peu de précision. Cela peut conduire à des résultats confus : par exemple, floor((0.1+0.7)*10) renverra généralement 7 au lieu du 8 attendu, car la représentation interne du résultat est quelque chose comme 7.9999999999... .

Ceci est lié au fait qu'il est impossible d'exprimer avec précision certaines fractions décimales avec un nombre fini de chiffres. Par exemple, 1/3 en décimal devient 0,3333333 .

Ne croyez donc jamais qu'un résultat de nombre à virgule flottante est précis jusqu'au dernier chiffre, et ne comparez jamais deux nombres à virgule flottante pour voir s'ils sont égaux. Si vous avez vraiment besoin d'une plus grande précision, vous devez utiliser des fonctions mathématiques de précision arbitraire ou des fonctions gmp

Ensuite, nous devrions réécrire le calcul ci-dessus comme

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun.


Recommandations associées :

PHP implémente la fonction de formatage des instructions SQL

phpMéthode d'implémentation d'un modèle de conception monomorphe

Méthode d'objet de requête TP5 Request en PHP

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal