php - Lors de l'utilisation de la fonction is_int, lorsque le nombre à déterminer dépasse 9 chiffres, false est renvoyé. Pourquoi ?
大家讲道理
大家讲道理 2017-05-16 13:04:03
0
2
1015

Lors de l'utilisation de la fonction is_int, PHP renvoie false lorsque le nombre à déterminer dépasse 9 chiffres. Pourquoi ?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(2)
滿天的星座

. . . .
Les entiers entiers ont une plage, et cette plage est différente de la plage de 32 bits (valeur maximale : 2^31 - 1) et 64 bits (valeur maximale : 2^63 - 1) liée à la version de la plateforme. À ce stade, les nombres hors plage seront interprétés comme du type float, donc le jugement de la fonction is_int() sera faux. Ce qui suit est un débordement d'entier 64 bits :

.
$large_number = 9223372036854775807;
var_dump(is_int($large_number));                     // true

$large_number = 9223372036854775808;
var_dump(is_int($large_number));                    // false
世界只因有你

Selon le manuel du site officiel de php :

La longueur des mots entiers dépend de la plate-forme, bien que le maximum habituel soit d'environ deux milliards (signé 32 bits). La valeur maximale sur les plateformes 64 bits se situe généralement autour de 9E18, sauf pour les versions antérieures à PHP 7 sous Windows, qui étaient toujours en 32 bits. PHP ne prend pas en charge les entiers non signés. La longueur de mot d'une valeur entière peut être représentée par la constante PHP_INT_SIZE Depuis PHP 4.4.0 et PHP 5.0.5, la valeur maximale peut être représentée par la constante PHP_INT_MAX, et la valeur minimale peut être représentée par la constante PHP_INT_MIN en PHP. 7.0.0 et versions ultérieures.

Donc pour un entier de 32 bits, signé 2^31=2147483648 (environ 2 milliards), c'est un nombre à 10 chiffres, donc pour la situation que vous avez évoquée, il est vrai que plus de 9 chiffres renverront faux.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal