嘮嗑下PHP的求餘 取模 運算

2021-08-19 07:01:47 字數 1716 閱讀 1526

先來看下個小案例:

$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 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義...