NodeJS值不正确

时间:2017-04-30 02:21:14

标签: javascript node.js

根据我的经验,php代码和javascript可以非常便携,但今天我发现了这个:

$secret1 = 8992483;
$secret2 = 1785665;
$counter = 3288985389;
for ($i=0; $i<10000000; $i++) {
    $counter = ($counter * $secret1) % $secret2;
}
console.log($counter);

在chrome / nodejs中执行时,我得到652751,但在其他语言中,如PHP甚至C,它应该是:1281709

我做错了什么? :S

由于

编辑:为避免达到max int,您可以使用大整数

var bigInt = require("big-integer");
$secret1 = 8992483;
$secret2 = 1785665;
$counter = bigInt(3288985389);
for ($i=0; $i<10000000; $i++) {
    $counter = $counter.multiply($secret1).mod($secret2);
}
console.log($counter);

1 个答案:

答案 0 :(得分:2)

这取决于语言如何处理整数和整数溢出

例如,在某些语言中,当你有max_int + 1 == min_int

这是因为最大整数以这种方式编码:011111111 ...

因此,当你加1时,得到:100000000 ......这是最小整数