Précision du calcul flottant en PHP : pourquoi c'est délicat et comment y remédier
Lorsque vous travaillez avec des nombres à virgule flottante en PHP, c'est crucial être conscient de leurs limites inhérentes en matière de précision. Comme le démontre l'extrait :
<br>$fooValue = 100.68;<br>$cowValue = 100.67;</p> <p>$diffValue = $fooValue - $cowValue;<br> if ($diffValue <= 0.01) {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">echo("success");
} else {
echo("error");
}
Vous pourriez être surpris pour constater que cela générera une "erreur" même si la différence entre les valeurs est inférieure à 0,01. Ce comportement vient du fait que les nombres à virgule flottante en PHP, et en fait dans tous les systèmes informatiques, sont basés sur des représentations binaires, ce qui entraîne une perte potentielle de précision lors de la conversion.
Pour relever ce défi, il est conseillé d'éviter de se fier à sur l'arithmétique à virgule flottante lorsqu'une précision absolue est requise. Il existe deux approches principales que vous pouvez envisager :
1. Utilisez BC Math ou la bibliothèque GMP :
2. Comprendre les impacts et les solutions de contournement potentielles :
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!