J'ai deux double valeurs apparemment égales en PHP (au moins lors de leur écho). p>
Mais lorsque vous les comparez à un double équivaut, pour une raison quelconque, il est évalué à faux. Existe-t-il des considérations spéciales lors de l'exécution de ce type de comparaison? P>
5 Réponses :
float et double ne doivent jamais être comparés pour l'égalité: il existe des erreurs de précision qui feront deux chiffres différents, même s'ils semblent égaux (lorsqu'ils sont imprimés, ils sont généralement arrondis).
La bonne façon de comparer utilise Constante Delta: P>
define(DELTA, 0.00001); // Or whatever precision you require if (abs($a-$b) < DELTA) { // ... }
Vous ne devez pas comparer les numéros de points flottants à l'aide de l'opérateur Voir le grand avertissement et Que fonctionnera affirmer que les deux chiffres sont dans un certain petit Distance les uns des autres comme ceci: p> == code>.
explication dans le manuel PHP code>
p> if(abs($a - $b) < 0.0001) {
print("a is mostly equal to b");
}
Représentation des nombres de points flottants dans PHP ( ainsi que dans C et de nombreuses autres langues A >) est inexact. En raison de ce fait, des nombres apparemment égaux peuvent en fait être différent et une comparaison échouera. Au lieu de cela, choisissez un petit nombre et vérifiez que la différence est inférieure à celle, comme: Voir aussi explications dans le manuel PHP . p> p>
Une petite fonction que j'ai faite, l'espoir aide quelqu'un: usage: p>
Pas le moyen le plus rapide mais convertir en chaîne avant de comparer:
Pouvez-vous poster le code que vous utilisez et celles-ci sont doubles?