1. 程式人生 > 其它 >小學數學教的求餘數和php取模的區別

小學數學教的求餘數和php取模的區別

小學數學老師告訴我們,求餘數:同號相除等於正數,異號相除等於負數。但是php中取模和這個有點不一樣,主要區別在於取模的結果符號是由被除數符號決定的

小學數學老師告訴我們,求餘數:同號相除等於正數,異號相除等於負數。但是php中取模和這個有點不一樣,主要區別在於取模的結果符號是由被除數符號決定的。來人,把demo給朕抬上來~

科普

本人學渣,為了避免概念混淆,特意梳理下概念:

被除數 ➗ 除數 = 商  ...  餘數

測試

<?php
// **** 為了避免%和/混淆,下面順便對比一下求商的過程,可得求商結果的符號和php運算中是一致的.
echo '求商...'.PHP_EOL;
echo '求商 = 被除數(正數) / 除數(負數):'.PHP_EOL;
$a1 = intval(10/-3);
echo $a1.PHP_EOL;

echo '求商 = 被除數(負數) / 除數(正數):'.PHP_EOL;
$a11 = intval(-10/3);
echo $a11.PHP_EOL;

echo '求商 = 被除數(負數) / 除數(正數)[使用高精度方法]:'.PHP_EOL;
$a111 = bcdiv('-10', '3');
echo $a111.PHP_EOL;

echo PHP_EOL.PHP_EOL;

// **** 下面是求模和數學中求餘的主要區別,求模的餘數符號是由被除數的符號決定的,即使是高精度計算也一樣 ****
echo '求模...'.PHP_EOL;
// 求模 = 被除數 % -除數
echo '求模 = 被除數(正數) % 除數(負數):'.PHP_EOL;
$a2 = 10%-3;
echo $a2.PHP_EOL;

echo '求模 = 被除數(負數) % 除數(正數):'.PHP_EOL;
$a22 = -10%3;
echo $a22.PHP_EOL;

echo '求模 = 被除數(負數) % 除數(正數)[使用高精度方法]:'.PHP_EOL;
$a222 = bcmod('-10', '3');
echo $a222.PHP_EOL;

結果

求商...
求商 = 被除數(正數) / 除數(負數):
-3
求商 = 被除數(負數) / 除數(正數):
-3
求商 = 被除數(負數) / 除數(正數)[使用高精度方法]:
-3


求模...
求模 = 被除數(正數) % 除數(負數):
1
求模 = 被除數(負數) % 除數(正數):
-1
求模 = 被除數(負數) % 除數(正數)[使用高精度方法]:
-1