PHP中的数字问题(64无符号整数的最大可能值)
这是我正在运行的示例代码PHP中的数字问题(64无符号整数的最大可能值),php,Php,这是我正在运行的示例代码 <?php //$maxval = (2**64)-1; $maxval = (2**64); $maxval = $maxval-10000; echo number_format($maxval,0,".","") . "\n"; echo "18446744073709551615\n"; ?> 但据我所知,第一行应该是 184
<?php
//$maxval = (2**64)-1;
$maxval = (2**64);
$maxval = $maxval-10000;
echo number_format($maxval,0,".","") . "\n";
echo "18446744073709551615\n";
?>
但据我所知,第一行应该是
18446744073709541615
那么我做错了什么呢?PHP中的整数是有符号整数。最小值和最大值都有常量PHP_INT_MIN和PHP_INT_MAX
//64 Bit PHP Version !
var_dump(PHP_INT_MAX); //int(9223372036854775807) = 2**63-1
如果这些值如果大于整数范围,PHP将自动转换为浮点。然而,Float远不如63位精确。这就是不准确的原因
这些函数几乎可以用于任何精度的计算。此代码用于检查以字符串形式出现且为无符号64位整数的数字
$val = "18446744073709551614";
$maxUnsign64Bit ="18446744073709551615";
if(ctype_digit($val) AND bccomp($val,$maxUnsign64Bit) !== 1){
echo 'is a 64 Bit number';
};
谢谢你的回答!
$val = "18446744073709551614";
$maxUnsign64Bit ="18446744073709551615";
if(ctype_digit($val) AND bccomp($val,$maxUnsign64Bit) !== 1){
echo 'is a 64 Bit number';
};