recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Taille de comparaison des données flottantes trop grande

$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 ?

曾经蜡笔没有小新曾经蜡笔没有小新2741 Il y a quelques jours879

répondre à tous(4)je répondrai

  • 某草草

    某草草2017-06-21 10:13:00

    Bibliothèque de fonctions de haute précision php BC

    if(bcsub($a,$b,1)==0){
        echo '相等';
    }

    répondre
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-21 10:13:00

    $a = 12345678912345678.8;
    $b = 12345678912345678.9;
    $a = (string)$a;
    $b = (string)$b;
    if ($a == $b) {
        echo '相等';
    }

    répondre
    0
  • 仅有的幸福

    仅有的幸福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.

    1. Premier séparé par

    2. Obtenez le nombre de chiffres dans la partie entière, comparez la longueur, puis comparez la taille.

    3. 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.

    répondre
    0
  • PHP中文网

    PHP中文网2017-06-21 10:13:00

    <?php
        $a = 12345678912345678.8;
        $b = 12345678912345678.9;
        if (strval($a) == strval($b)) {
            echo '相等';
        }
    ?>

    répondre
    0
  • Annulerrépondre