Pourquoi mon calcul PHP Float entraîne-t-il une « erreur » au lieu d'un « succès » ?

Linda Hamilton
Libérer: 2024-10-30 16:44:03
original
598 Les gens l'ont consulté

Why Does My PHP Float Calculation Result in

Les pièges de précision notoires des calculs flottants PHP

Lors de la manipulation de données numériques, la précision est primordiale. Cependant, le type de données float de PHP peut être notoirement délicat, entraînant des inexactitudes inattendues dans les calculs.

Considérez l'extrait PHP suivant :

<code class="php">$fooValue = 100.68;
$cowValue = 100.67;

$diffValue = $fooValue - $cowValue;
if($diffValue <= 0.01) {
    echo("success");
} else {
    echo("error");
}</code>
Copier après la connexion

À notre grand étonnement, ce code affiche "erreur" au lieu de le « succès » attendu.

La cause : l'inexactitude des flotteurs

Le coupable est l'inexactitude inhérente des types de données flottants. Lors de la conversion vers et depuis le binaire, la précision peut être perdue. Par conséquent, la comparaison des valeurs flottantes pour une égalité exacte peut s'avérer peu fiable.

Solutions pour les calculs de précision

Pour résoudre ce problème, envisagez les approches suivantes :

  • BC Math : Utilisez la bibliothèque BC Math pour l'arithmétique à précision arbitraire. Il fournit des fonctions spécialement conçues pour des calculs précis.
  • GMP : Utilisez la bibliothèque GMP pour des calculs hautes performances basés sur des nombres entiers. Bien qu'il ne prenne pas en charge les décimales, les conversions vers et depuis des nombres entiers peuvent parfois préserver la précision.

Conseils supplémentaires :

  • Évitez de comparer les flottants pour des valeurs strictes. égalité. Optez plutôt pour un petit seuil de tolérance qui tient compte des inexactitudes potentielles.
  • Dans la mesure du possible, utilisez des nombres entiers au lieu de flottants pour les calculs impliquant de l'argent ou d'autres valeurs qui nécessitent de l'exactitude.
  • Soyez conscient des limites. de types de données flottants et tenez toujours compte des exigences de précision de vos calculs.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!