La conversion implicite de float (nombre) en int perd en précision
P粉449281068
P粉449281068 2023-10-21 18:33:55
0
2
763

J'ai utilisé cette formule avant php 8.1

Cela a très bien fonctionné, mais maintenant, après la mise à niveau, je continue à recevoir ces erreurs

Deprecated: Implicit conversion from float -INF to int loses precision Deprecated: Implicit conversion from float 0.6666666666666666 to int loses precision Deprecated: Implicit conversion from float 1.0137975617194084 to int loses precision Deprecated: Implicit conversion from float 2.3333333333333335 to int loses precision

Je n'arrive pas à trouver ou à comprendre dans la documentation 8.1 pourquoi cela se produit maintenant

P粉449281068
P粉449281068

répondre à tous (2)
P粉043295337
// Implicit variant $number= "2"; $calc = 2 + $number; // Cast variant $number = "2"; $calc= 2 + (int) $number; // Explicit variant $number = "2"; $calc = 2 + intval($number); // Everything is good variant ^^ $number = 2; $calc = 2 + $number;
    P粉211600174

    Lorsque vous effectuez une opération OU au niveau du bit via l'opérateur|, vous obtenez une conversion implicite en un entier. C'est une façon... étrange... de convertir en un nombre entier. Pour éviter l'avertissement, lancez simplement un casting explicite.

    Implicite :

    echo log10(abs($number)) / 3 | 0;

    Passez explicitement la fonction :

    echo intval(log10(abs($number)) / 3);

    Ou via casting :

    echo (int) (log10(abs($number)) / 3);
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!