您的位置:首页 >PHP教程 > 技术篇 > php的求余数运算的重大发现>

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

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的世界里不能乱用啊!


0

本文固定链接: http://www.ctphp.com/article/detail/aid-86.html| php的求余数运算的重大发现-PHP教程-技术篇--长藤个人博客网站

该日志由 admin 于2016年01月15日发表在您的位置:首页 >PHP教程 > 技术篇 > 分类下, 通告目前不可用,你可以至底部留下评论。
原创文章转载请注明: php的求余数运算的重大发现-PHP教程-技术篇--长藤个人博客网站

发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项