php的求余数运算的重大发现

php求余数的精妙之处
例如:
$i = 8%3;结果$i = 2;都很正确!
但是这些结果都是在php最大的整数范围内实现的,即2147483647这个数以内实现。
如果求余数大于这个数呢?
比如达到了13430208684,11位以上的数字的时候咋办恩?
那么你还用%的话结果就大错特错了!
但是javascript却能很容易的算出结果来,比如:
alert(13430208684%5999),结果就是1425,是正确的答案。
用php的算法
echo 13430208684%5999=3695;为什么呢?
这么说来javascript和java,c语言之类的相比是不是有劣势?
如果这个数字大于了PHP_INT_MAX,就不能说是整数了,是浮点型的数字了,
用浮点型的数字来算余数肯定是错误的!
php的设计者也想到了这个问题,这个时候他们就研发出来BC 高精确度函数库
专门为这个需要得到高精度结果的数字运算进行的。
我们看一下下面的函数库
当我们用这些函数进行运算的时候,把操作的数字都当成了字符串,最后得出的结果也是字符串。
echo bcmod(13430208684,5999);
结果就是1425
bcmod就是php高精度求余数的函数,这个才能得出正确的结果。
echo bcmod(8,3);同样也能得到2。
看来%在php的世界里不能乱用啊!
本文固定链接: http://www.ctphp.com/article/detail/aid-86.html| php的求余数运算的重大发现-PHP教程-技术篇--长藤个人博客网站