唠嗑下PHP的求余(取模)运算
先来看下个小案例:
$n = 8.45;$result = $n*100;echo gettype($result);var_dump($result);echo intval($n*100).'
';echo $result%100;
输出:
double
float 845
844
44
看到这结果,大家是否有点儿惊奇呢?
其实,本质就是为intval((double) 845) = 944;因为我们上面用到了求余(取模)运算符%,而取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
此外,取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a(被除数) % $b(除数) 的结果和 $a 的符号相同。接下来看几个例子:
如:
echo (5 % 3)."\n"; echo (5 % -3)."\n"; echo (-5 % 3)."\n"; echo (-5 % -3)."\n";
输出:
2 2 -2 -2
我们再来介绍一个跟求余有关的Math函数fmod(),该函数主要是返回除法的浮点数余数。
float fmod ( float
$x , float $y )
返回被除数(x)除以除数(y)所得的浮点数余数。余数(r)的定义是:x = i * y + r,其中 i 是整数。如果 y 是非零值,则 r 和 x 的符号相同并且其数量值小于 y。 其实实质就是x/y的浮点数余数。
例子:
$x = 5;
$y = 2;
// $t = mod($x, $y);//Fatal error: Call to undefined function mod()
echo '我是fmod($x, $y)输出的值:'.fmod($x, $y);
echo "
";
echo '我是$x % $y输出的值:'.$x % $y; 结果:
我是fmod($x, $y)输出的值:1
我是$x % $y输出的值:1
$x = 5.8;$y = 2.5;// $t = mod($x, $y);//Fatal error: Call to undefined function mod()echo '我是fmod($x, $y)输出的值:'.fmod($x, $y);echo "
";echo '我是$x % $y输出的值:'.$x % $y;结果:
我是fmod($x, $y)输出的值:0.8 我是$x % $y输出的值:1
注意的是,PHP里并没有mod()函数,使用时应注意。
小结:1、%求余的时候,就是先把运算之前的被除数和除数都转换成整数(除去小数部分)
2、fmod()就类似于数学里面的求余运算。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
