32 bit - PHP intval() changes number NOT 2147483647 -
i'm running php 5.3.13 , when execute
php -r "echo intval(9999999999);"
it outputs 1410065407.
when execute
php -r "echo intval(php_int_max);"
it outputs 2147483647.
the smaller integer causing code issues. why difference?
in case, value 9999999999
beingness stored float
. can verify var_dump(9999999999)
. when it's casted signed integer, value truncated 32 bits gives value 1410065407
.
you can verify calculation hand or using gmp math extension:
$num = gmp_init("9999999999"); $bits = gmp_pow(2, 32); var_dump(gmp_strval(gmp_mod($num, $bits))); // string(10) "1410065407"
php 32-bit
No comments:
Post a Comment