在scala(java)
中scala> 8218553819005469347L * 31
res75: Long = -3479248642764172867
但是在php(5.5 / 64bit linux系统)中
<?php
echo (int)(8218553819005469347 * 31);
打印 -3479248642764177408
如何让php返回与java相同的结果。
答案 0 :(得分:1)
function multiply31($num) {
return (int)(($num << 5) - $num);
}
将multiply
转为add
似乎有效。
答案 1 :(得分:0)
这可能最好地解释它http://www.php.net//manual/en/language.types.integer.php
还要记住PHP还没有完全移植到64位,请参阅http://windows.php.net/侧边栏中的这个小注释
x86_64构建
用于Windows的PHP的x64版本应被视为 experimental ,并且尚未提供64位整数或大文件支持。请参阅此帖子以了解正在进行的改进这些构建的工作。