2010-12-07 5 views
0

J'ai deux nombres en PHP. 81.0000 et 81. Bien qu'ils soient égaux en réalité, je ne peux pas obtenir qu'ils soient égaux en PHP.Même nombre de formats différents en PHP

J'ai essayé de lancer les deux nombres pour flotter et ils ne seront toujours pas considérés comme égaux.

Quelqu'un at-il une idée de comment je peux avoir ces deux nombres sont les mêmes?

+1

Pouvez-vous inclure quelques exemples de code? 'php> echo 81.0000 == 81;' retourne vrai pour moi – baloo

+0

Utilisez-vous '===' pour vérifier ?? – RSK

Répondre

5

Vérifiez la WARNING impressionnante sur php.net:

Ne faites jamais confiance nombre flottant résultats au dernier chiffre, et ne jamais comparer les nombres à virgule flottante pour l'égalité.

Le meilleur que vous pouvez pour est coulée de type à (int), ou utiliser les fonctions PHP comme arrondi round(), floor() ou ceil().

MISE À JOUR
Vérifiez la Arbitrary Precision Math Functions comme celui @Jose Vega a souligné dans sa réponse. Ils devraient vous amener là où vous devez aller.

+0

+1 Très très, très vrai. :-) –

+0

+1 pour php.net doc citation – Craige

3

bccomp - Comparer deux nombres de précision arbitraire

bccomp (string $left_operand , string $right_operand [, int $scale ]) 

<?php 

echo bccomp('1', '2') . "\n"; // -1 
echo bccomp('1.00001', '1', 3); // 0 
echo bccomp('1.00001', '1', 5); // 1 

?> 
+0

+1, quelle fonction sympa! – Stephen

Questions connexes