取模
5 mod 3 = 2
-5 mod 3 = 1
5 mod -3 = -1
-5 mod -3 = -2
取余
5 rem 3 = 2
-5 rem 3 = -2
5 rem -3 = 2
-5 rem -3 = -2
取余,遵循尽可能让商大的原则
取模,遵循尽可能让商小的原则
经过测试,在C/C++, C#, JAVA, PHP这几门主流语言中,’%’运算符都是做取余运算,而在python中的’%’是做取模运算。
此外,余数在数学中的定义是始终大于等于0的,而对于某些编程语言的取余运算不是按照上面的定义来执行的,因此才会出现余数小于0的情况。
$val=9.45;
$result=$val*100;
echo $result%100; //44
echo 945%100 //45
这是因为php默认对变量进行取整进行取余运算的。
对于大整数,php会出现溢出,可能返回负数情况(这是因为php默认使用整数取余的,所以你要把它转换成float类型(如上))可以这样做:
$val=9.45;
$result=$val*100;
echo intval($result); //这里输出944
echo $result%100; //这里输出44
echo fmod(floatval($result),100); //这里输出45
封装后的方法:
function Kmod($bn, $sn)
{
return intval(fmod(floatval($bn), $sn));
}