php取余
A. php取余的一個嚴重問題!!
<?php
$val=9.45;
$result=$val*100;
echo $result%100;
?>
$result = (double) 945
intval($result) = 944;
也就是說 intval((double) 945) = 944;
<?php
$val=9.45;
$result=intval($val*100);
echo $result;
?>
你可以試試這個 結果是 944
B. php 中return()後接一個取余運算,返回後把結果當成true或者false.如何理解
他的返回值是一個表達式,而這個表達式的返回值是布爾值,意思就是如果取余等於零的話返回值就是true,及返回值是true,如果不等於零返回值就是false及返回值是false
C. php中對多位整數向上取余怎麼做,例如15325變成16000
/**
+-------------------------------------------------
* @param int $amount 目標數字
+-------------------------------------------------
* @param int $num 向上取整的位數
+-------------------------------------------------
* @return int
+-------------------------------------------------
*/
function rounding($amount,$num)
{
$change = 1;
for($i = 0;$i < $num;$i++){
$change = $change * 10;
}
return ceil($amount/$change)*$change;
}
echo rounding(15325,3);
D. php取余 8%(-2)
%是模運算,就是取余的意思。 8除-2 的-4 餘0 ,所以是0了 這個說法是對的,只是他沒說全,PHP在取余前,會先前將被除數四捨五入取整後再除的,所以,你上面的1.3,1.2之類的就都成了8%1了,余數肯定為0了,
E. PHP取余數 怎麼取出來是負數
這個的確是PHP的BUG,參考文章內容如下:
我們先來看個例子.
$res = 16244799483;
echo $res%9999999;
// 輸出結果為 -5069794, 正確的結果應該是4801107
其實這也算上PHP一個BUG吧.最主要是PHP是個弱類型語言.他內置了機器來判斷用戶的類型.
但是機器畢竟是機器.也有判斷出錯的時候.就像上面.所以這時候我們就需要人工干預下.
所以我就想到要用下面的方法來解決PHP整數取余返回負數的問題.
$res = floatval(16244799483);
var_mp($res % 9999999);
我們看到結果還是錯誤的-5069794.
但是值得注意的是返回是一個int類型的.
詳細思考了一下.PHP整數取余返回負數的問題是這樣處理的.
PHP取余默認為整數的.
而且當你定義$res = 16244799483;
其實就已經溢出了.所以要加上強制類型轉換.變成float類型.
但是這樣還不夠.因為%這個取模計算還是針對整數的.
所以我們需要一個函數fmod.是針對float類型的.
所以最終PHP整數取余返回負數的解決辦法為:
$res = floatval(16244799483);
var_mp(fmod($res,9999999));
這樣我們就解決了PHP整數取余返回負數這個問題.
大體明白了吧,其實一般不會出現使用PHP做大量科學計算的~~
F. %在php中是什麼意思
%在php中有多種含義:
1.字元 'afafa%bbafs'
2.百分數 50%
3.取餘3%2=> 1
4.格式化輸出
<?php
$number = 123;
$txt = sprintf("%f",$number);
echo $txt;
?> =>123.000000
參數 format 是轉換的格式,以百分比符號 ("%") 開始到轉換字元結束。下面的可能的 format 值:
%% - 返回百分比符號
%b - 二進制數
%c - 依照 ASCII 值的字元
%d - 帶符號十進制數
%e - 可續計數法(比如 1.5e+3)
%u - 無符號十進制數
%f - 浮點數(local settings aware)
%F - 浮點數(not local settings aware)
%o - 八進制數
%s - 字元串
%x - 十六進制數(小寫字母)
%X - 十六進制數(大寫字母)
G. php中模運算是什麼
php中模運算是%,x % y 就是指
x 除以 y 的余數,如下例所示:
H. thinkphp中if條件中取余怎麼寫
//PHP中有取余的運算符,如拿9對2取余
$number=9%2;
if($number==1){
//
}else{
//
}
I. 關於php的取余問題
可能是浮點數自動轉換整型的一個bug
<?php
$val = 9.45;
$val = ($val * 100).'.00';
$result = $val%100;
echo $result;
?>
這樣寫就可以了
J. php怎麼利用下述代碼的基礎上做加減乘除取余計算器
根據你的代碼,我實現了一下。
你可以試一試,有問題再追問。
<!--文件6-1.php:表單數據傳遞-->
<HTML>
<HEAD>
<TITLE>表單數據傳遞</TITLE>
</HEAD>
<BODY>
<?php
if(isset($_POST["tag"])){
$addend1=$_POST["addend1"];
$addend2=$_POST["addend2"];
$method=$_POST['method'];
}else{
$addend1=0;
$addend2=0;
$method='+';
}
switch($method){
case'+':
$result=$addend1+$addend2;
break;
case'-':
$result=$addend1-$addend2;
break;
case'x':
$result=$addend1*$addend2;
break;
case'/':
$addend2=$addend2==0?1:$addend2;
$result=$addend1/$addend2;
break;
case'%':
$addend2=$addend2==0?1:$addend2;
$result=$addend1%$addend2;
break;
default:
$method='+';
$result=$addend1+$addend2;
}
?>
請在下面的表單中輸入兩數以求其值
<formname="form1"method="post"action="#">
<!--下面是一個隱藏表單,接收後用以來判斷是提交前的頁面還是提交後的頁面-->
<inputtype="hidden"name="tag"size="4"value="1">
<inputtype="text"name="addend1"size="4"value="<?phpecho$addend1;?>">
<selectname="method">
<optionvalue='+'<?phpif($method=='+')echo"selected='selected'";?>>+</option>
<optionvalue='-'<?phpif($method=='-')echo"selected='selected'";?>>-</option>
<optionvalue='x'<?phpif($method=='x')echo"selected='selected'";?>>x</option>
<optionvalue='/'<?phpif($method=='/')echo"selected='selected'";?>>/</option>
<optionvalue='%'<?phpif($method=='%')echo"selected='selected'";?>>%</option>
</select>
<inputtype="text"name="addend2"size="4"value="<?phpecho$addend2;?>">
=
<?phpecho$result;?><br>
<br><inputtype="submit"name="button1"value="計算">
<inputtype="reset"name="button2"value="重置">
</form>
</BODY>
</HTML>