先來看下個小案例:
$n = 8.45;
$result = $n*100;
echo gettype($result);
var_dump($result);
echo intval($n*100).'
'; echo $result%100;
輸出:
double
float 845
84444
看到這結果,大家是否有點兒驚奇呢?
其實,本質就是為
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()就類似於數學裡面的求餘運算。
取模運算和求餘運算的區別
通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。對於整型數a,b來說,取模運算或者求餘運算的方法都是 1.求 整數商 c a ...
取模運算和求餘運算的區別
通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。對於整型數a,b來說,取模運算或者求餘運算的方法都是 1.求 整數商 c a ...
取模運算和求餘運算的區別
標籤 python語言c shell 指令碼程式設計 2011 10 09 16 16 29640人閱讀收藏 舉報 c語言 6 通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義...