你实际上应该确保你键入你的意思:
$bigint = 9999999999999999999;
不是PHP整数,但是float:
float(1.0E+19)
如果你会做的
$bigint = (int) 9999999999999999999;
实际上你会设置一个整数,但不会是你可能预期的数字:
int(-8446744073709551616)
把它变成字符串是没有问题的,你可能已经猜到了.所以当你把数字写入代码中时,请注意你实际写的是什么意思.
再次看到这一行:
$bigint = 9999999999999999999;
尝试了解你实际写的内容.它不是一个整数,因为PHP会把它变成一个浮点数.请参见示例#4 integer manual page中64位系统上的整数溢出.
如果你需要更高的精度,结帐GNU Multiple Precision,它可能有你要找的东西.但是,这不会改变如何在PHP中编写数字:
$bigint = gmp_init("9999999999999999999");
$bigint_string = gmp_strval($bigint);
var_dump($bigint, $bigint_string);
输出:
resource(4) of type (GMP integer)
string(19) "9999999999999999999"