我有一个奇怪的错误。见代码
$val1 = pow(2, 64);
$val2 = $val1 - 1;
echo number_format($val1, 0, '', '') . "<br/>";
echo number_format($val2, 0, '', '') . "<br/>";
它的输出
18446744073709551616
18446744073709551616
为什么$ val2的值为18446744073709551616,必须是18446744073709551615?
答案 0 :(得分:1)
这是因为$ val1变为浮动,浮动精度不高。看看Float precision只看一下手册floor((0.1+0.7)*10)
中的例子应该是8但是在我的电脑上它也会返回7(如手册中所示)
如果你想使用这么大的数字,你应该使用专用的PHP库或BCMath