先來看下個小案例:
$n = 8.45; $result = $n*100; echo gettype($result); var_dump($result); echo intval($n*100).'<br>'; echo $result%100;
輸出:
double
float 845
844
44
看到這結果,大家是否有點兒驚奇呢?
其實,本質就是為intval((double) 845) = 944;因為我們上面用到了求余(取模)運算符%,而取模運算符的操作數在運算之前都會轉換成整數(除去小數部分)。
此外,取模運算符 % 的結果和被除數的符號(正負號)相同。即 $a(被除數) % $b(除數) 的結果和的符號相同。接下來看幾個例子:
如:
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
)所得的浮點數余數。余數()的定義是:x = i * y + r,其中 是整數。如果 y
是非零值,則 和 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 "<br>";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 "<br>"; echo '我是$x % $y輸出的值:'.$x % $y;
結果:
我是fmod($x, $y)輸出的值:0.8
我是$x % $y輸出的值:1
注意的是,PHP里并沒有mod()函數,使用時應注意。
小結:1、%求余的時候,就是先把運算之前的被除數和除數都轉換成整數(除去小數部分)
2、fmod()就類似于數學里面的求余運算。
相關推薦:
詳解使用PHP求兩個字符串最長公共子串
以上就是PHP的求余(取模)運算的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答