您好,登錄后才能下訂單哦!
PHP中MOD(x,y)與x%y的區別是什么?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
一、兩個異號整數求余
1.函數值符號規律(余數的符號)
mod(負,正)=正
mod(正,負)=負
結論:兩個整數求余時,其值的符號為除數的符號。
2.取值規律
先將兩個整數看作是正數,再作除法運算
①能整除時,其值為0
②不能整除時,其值=除數×(整商+1)-被除數
例:mod(9,-8)=-7
即:9除以8的整數商為1,加1后為2;其與除數之積為18;再與被數之差為7;取除數的符號。所以值為-7。
二、兩個小數求余
取值規律:被除數-(整商×除數)之后在第一位小數位進行四舍五入。
例:mod(9,1.2)=1
即:9除1.2其整商為7;7與除數1.2之積為8.4;8.4四舍五入之后為8;被除數9與8之差為1。故結果為1。
例:mod(9,2.4)=0
即:9除2.2其整商為4;4與除數2.2這積為8.8;8.8四舍五入之后為9;被除數9與9之差為0。故結果為0。
OK,就這些不知能否滿足您的需要?
%
復制代碼 代碼如下:
<?php
echo 15%4;
//結果是 3
說說php取余運算(%)的那點事
今天我是看到百度知道中這個例子:http://zhidao.baidu.com/question/41130500.html ,才想研究下php取余的!
復制代碼 代碼如下:
<?php
$val=9.45;
$result=$val*100;
echo $result%100; //44
?>
提問者奇怪,為什么上面輸出的記過是44 而不是想象中的45 ,如果你這樣:
echo 945%100 //45
那么結果應該是45的,這是因為php默認對變量進行取整進行取余運算的。
關于php浮點數,情況laruence博客文章:http://www.laruence.com/2013/03/26/2884.html
然后看看下面的php代碼:
復制代碼 代碼如下:
<?php
/*
* name: mckee
* blog: http://www.phpddt.com
*/
$val=9.45;
$result=$val*100;
echo intval($result); //這里輸出944
echo $result%100; //這里輸出44
echo fmod(floatval($result),100); //這里輸出45
?>
對于大整數,php會出現溢出,可能返回負數情況(這是因為php默認使用整數取余的,所以你要把它轉換成float類型(如上))可以這樣做:
復制代碼 代碼如下:
function Kmod($bn, $sn)
{
return intval(fmod(floatval($bn), $sn));
}
關于PHP中MOD(x,y)與x%y的區別是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。