Maison  >  Article  >  développement back-end  >  Solutions aux opérations en virgule flottante inexactes sous PHP

Solutions aux opérations en virgule flottante inexactes sous PHP

墨辰丷
墨辰丷original
2018-05-31 10:07:301566parcourir

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);

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!

Déclaration:
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