PHP:bigint数字出错

时间:2014-07-06 08:29:20

标签: php php-5.3

我有一个奇怪的错误。见代码

    $val1 = pow(2, 64);
    $val2 = $val1 - 1;
    echo number_format($val1, 0, '', '') . "<br/>";
    echo number_format($val2, 0, '', '') . "<br/>";

它的输出

18446744073709551616
18446744073709551616

为什么$ val2的值为18446744073709551616,必须是18446744073709551615?

1 个答案:

答案 0 :(得分:1)

这是因为$ val1变为浮动,浮动精度不高。看看Float precision只看一下手册floor((0.1+0.7)*10)中的例子应该是8但是在我的电脑上它也会返回7(如手册中所示)

如果你想使用这么大的数字,你应该使用专用的PHP库或BCMath