這篇文章主要介紹了關於PHP的求餘(模數)運算 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
先來看下個小案例:
$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求兩個字串最長公用子串