取余函数 PHP 取余函数 PHP 两个取余 MOD(x,y) x%y
MOD
例如: 9/3,9 是被除数, 3 为除数. mod 函数是一个求余函数, 其格式为:
mod(nExp1,nExp2), 即是两个数值表达式作除法运算后的余数那么: 两个同号整数求余与你所知的两个正数求余完全一样(即两个负整数与两个正整数的算法一样)
一两个异号整数求余
1. 函数值符号规律(余数的符号)
mod(负, 正)= 正
mod(正, 负)= 负
结论: 两个整数求余时, 其值的符号为除数的符号
2. 取值规律
先将两个整数看作是正数, 再作除法运算
能整除时, 其值为 0
不能整除时, 其值 = 除数 ×(整商 + 1)- 被除数
例: mod(9,-8)=-7
即: 9 除以 8 的整数商为 1, 加 1 后为 2; 其与除数之积为 18; 再与被数之差为 7; 取除数的符号所以值为 - 7
二两个小数求余
取值规律: 被除数 -(整商 × 除数)之后在第一位小数位进行四舍五入
例: mod(9,1.2)=1
即: 9 除 1.2 其整商为 7;7 与除数 1.2 之积为 8.4;8.4 四舍五入之后为 8; 被除数 9 与 8 之差为 1 故结果为 1
例: mod(9,2.4)=0
即: 9 除 2.2 其整商为 4;4 与除数 2.2 这积为 8.8;8.8 四舍五入之后为 9; 被除数 9 与 9 之差为 0 故结果为 0
OK, 就这些不知能否满足您的需要?
%
代码如下:
- echo 15%4;
- // 结果是 3
说说 php 取余运算 (%) 的那点事
今天我是看到百度知道中这个例子: http://zhidao.baidu.com/question/41130500.html , 才想研究下 php 取余的!
代码如下:
- $val=9.45;
- $result=$val*100;
- echo $result%100; //44
- ?>
提问者奇怪, 为什么上面输出的记过是 44 而不是想象中的 45 , 如果你这样:
echo 945%100 //45
那么结果应该是 45 的, 这是因为 php 默认对变量进行取整进行取余运算的
关于 php 浮点数, 情况 laruence 博客文章: http://www.laruence.com/2013/03/26/2884.html
然后看看下面的 php 代码:
代码如下:
- /*
- * name: mckee
- * blog: http://www.phpddt.com
- */
- $val=9.45;
- $result=$val*100;
- echo intval($result); // 这里输出 944
- echo $result%100; // 这里输出 44
- echo fmod(floatval($result),100); // 这里输出 45
- ?>
对于大整数, php 会出现溢出, 可能返回负数情况 (这是因为 php 默认使用整数取余的, 所以你要把它转换成 float 类型(如上)) 可以这样做:
代码如下:
- function Kmod($bn, $sn)
- {
- return intval(fmod(floatval($bn), $sn));
- }
来源: https://www.php1.cn/detail/php-2a26de1864.html