正在做php前端开发,用到了php中的取余函数,发现两个情况,写出来,大家一起注意下。
1、发现mod,MOD都不行,才意识到有所改变,查找资料后发现改为了fmod(x,y)
2、在使用%取余时,发现数据不正确,本来使用的是int型数据13261711837 %1000,结果确实5504,查找资料后发现对于大整数,php会出现溢出,甚至可能返回负数情况(这是因为php默认使用整数取余的,所以你要把它转换成float类型。转化为float型后,问题解决
<?php
<span style="white-space:pre"> </span>echo " <1> . % ";
<span style="white-space:pre"> </span>echo 100.4567%30; // 10
<span style="white-space:pre"> </span>echo 3.45678%2; // 1
<span style="white-space:pre"> </span>echo 10.98765%4; // 2
<span style="white-space:pre"> </span>echo 10.98765%2; // 0
<span style="font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; text-indent: 2em;"> echo " <2> . fmod<函数>";</span>
echo fmod(100.45678,30); //10.45678
<span style="white-space:pre"> </span>echo fmod(3.45678,2); //1.45678
<span style="white-space:pre"> </span>echo fmod(10.98765,4); //2.98765
<span style="white-space:pre"> </span>echo fmod(10.98765,2); //0.98765
?>