A. php要如何判斷一個變數是否為負數
哎,如
if ($num<0) echo '負數';
B. php要如何判斷一個變數是否為負數
判斷這個數是否小於0即可.如果該數小於0,則是負數,否則為正數.
C. 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做大量科學計算的~~
D. php 負數是整型值嗎
首先回答你:是!
但是一般不這么判斷,不管從資料庫還是從用戶請求得到的數值,都不是數值類型(整型,浮點型等),而是字元串型,php能夠自動轉換數據類型,因此使用的時候感覺不到,但如果用 is_int() 去判斷就出錯了。
一般是is_numeric去判斷是否為一個數值變數,is_numeric包括浮點數等所有數值。
你可以用(int)$aaa的方式將變數$aaa強制轉換成整型。
E. PHP 負數值得問題
在計算機中,負數以其正值的補碼形式表達。
什麼叫補碼呢?這得從原碼,反碼說起。
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。
比如 00000000 00000000 00000000 00000101 是 5的 原碼。
反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。
取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)
比如:將00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
稱:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反碼。
反碼是相互的,所以也可稱:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互為反碼。
補碼:反碼加1稱為補碼。
也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。
比如:00000000 00000000 00000000 00000101 的反碼是:11111111 11111111 11111111 11111010。
那麼,補碼為:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在計算機中表達為:11111111 11111111 11111111 11111011
F. php 如何將數字 負號去除
//判斷如果是負數,就用abs()函數取其絕對值。
<?php
$num = $_POST['num'];//獲取數據
if($num<0){
$num=abs($num);
echo '是負數,將$num存入負數欄位';
}else{
echo '是正數,將$num存入正數欄位';
}
?>
G. PHP 數組下標負數的問題
這是因為win下是32bit的環境,Linux用的是64位環境。
-2在32bit下的數據為0xFFFF FFFE
-2在64bit下的數據為0xFFFF FFFF FFFF FFFE
而你那未經考慮就直接在64bit下可會導致
得到0x0000 0000 FFFF FFFE得值4294967294
解決辦法:根據-2的「產生演算法」或「數據來源」作出修改或應對
比如加入
if(PHP_INT_SIZE===4){
//在32bit系統下怎麼處理-2
}else{
//在64bit系統下怎麼處理-2
}