Maison > Questions et réponses > le corps du texte
$a = 12345678912345678.8;
$b = 12345678912345678.9;
Avec ces deux nombres différents, if($a == $b){echo 'equal';} le résultat est 'equal', je sais qu'il est trop grand et dépasse sa plage. Le résultat de la sortie de $a seul est. : 1.2345678912346E +16 hexadécimal, quelle est la meilleure façon de comparer des données aussi volumineuses ?
某草草2017-06-21 10:13:00
Bibliothèque de fonctions de haute précision php BC
if(bcsub($a,$b,1)==0){
echo '相等';
}
扔个三星炸死你2017-06-21 10:13:00
$a = 12345678912345678.8;
$b = 12345678912345678.9;
$a = (string)$a;
$b = (string)$b;
if ($a == $b) {
echo '相等';
}
仅有的幸福2017-06-21 10:13:00
Après avoir testé sur mon propre ordinateur, lorsque la longueur dépasse 14 caractères, PHP échouera. Différents systèmes et différentes versions de PHP auront des longueurs différentes.
Manuel officiel d'informations connexes
Méthode 1 :
$a = '12345678912345678.6';
$b = '12345678912345678.9';
if($a == $b) {
echo 1;
}
Méthode 2 :
Seules les idées suivantes sont fournies ici
Si vous souhaitez comparer directement via des virgules flottantes, il n'y a aucun moyen.
Premier séparé par
Obtenez le nombre de chiffres dans la partie entière, comparez la longueur, puis comparez la taille.
Si les parties entières sont égales, comparez les parties décimales.
Conseil : étant donné que le nombre est infini, vous devez également faire attention à la longueur du nombre après la séparation. S'il est plus long, séparez-le à nouveau.
PHP中文网2017-06-21 10:13:00
<?php
$a = 12345678912345678.8;
$b = 12345678912345678.9;
if (strval($a) == strval($b)) {
echo '相等';
}
?>