程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP取余函數介紹MOD(x,y)與x%y

PHP取余函數介紹MOD(x,y)與x%y

編輯:PHP綜合

取余函數 PHP取余函數 PHP兩個取余 MOD(x,y) x%y

MOD

例如:9/3,9是被除數,3為除數.mod函數是一個求余函數,其格式為:
mod(nExp1,nExp2),即是兩個數值表達式作除法運算後的余數。那麼:兩個同號整數求余與你所知的兩個正數求余完全一樣(即兩個負整數與兩個正整數的算法一樣)。

一、兩個異號整數求余

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));
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved