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';
};