使用模指数在使用费马素数检验对于大量(100,000+),它需要一些非常大的计算。当我将两个大数(例如:62574和62574)相乘时,PHP似乎将结果转换为浮点数。得到它的模数值会返回奇怪的值。$x = 62574 * 62574;
var_dump($x); // float(3915505476) ... correct
var_dump($x % 104659); // int(-72945) ... wtf.有没有办法让PHP正确地执行这些计算?或者,是否有另一种方法可以找到适用于大数的模数值?
3 回答
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
POPMUISE
TA贡献1765条经验 获得超5个赞
出于某种原因,PHP中有两个标准库处理任意长度/精度数字:BC数学和GMP..我个人更喜欢GMP,因为它更新鲜,有更丰富的API。
基于GMP我实现了十进制2类用于存储和处理货币金额(如100.25美元)。
![?](http://img1.sycdn.imooc.com/533e4d5b0001d57502200203-100-100.jpg)
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
$num1 = "123456789012345678901234567890"; $num2 = "9876543210"; $r = mysql_query("Select @sum:=$num1 + $num2"); $sumR = mysql_fetch_row($r); $sum = $sumR[0];
- 3 回答
- 0 关注
- 587 浏览
添加回答
举报
0/150
提交
取消