PHP經典例項讀書筆記 數字

2021-07-23 11:30:41 字數 2724 閱讀 2748

問題:

希望確保變數包含乙個數(即使變數的型別是字串)。或者,希望檢查變數不僅僅是乙個數,而且要特別指定其型別是乙個數字型別。

解決方案:

使用is_numeric() 檢查乙個變數是否是乙個數。

示例

//is_numeric不判斷資料型別

$arr=array(5,'5','05',12.3,'16.7','five','10e20',0xdecafbad);

foreach($arr

as$num)else

}//輸出

yesyes

yesyes

yesno

yesyes

擴充套件:is_numeric() 的有關文件

問題:希望檢查兩個浮點數是否相等。

解決方案:

使用乙個delta值,檢查兩個數字之差是否小於這個delta值。

示例

//高精度的浮點數,不能直接用==來判斷是否相等,浮點數會缺失精度

$delta=0.00001;

$a=1.0000001;

$b=1.0000000;

if(abs($a-$b)<$delta)else

//輸出

a=b

擴充套件:abs() 的有關文件

問題:希望捨入乙個浮點數,可能取整為乙個整數,或者捨入為指定的小數字數。

解決方案:

要把乙個數取整為最接近的數,可以使用round(),如果在兩個數之間,那麼就取遠離0的整數。向上取整用ceil(),向下取整用floor() 示例

//round()函式可以由第二個引數來決定,保留幾位小數。

$num1=round(2.4);

$num2=round(2.32,1); //表示保留一位小數

$num3=ceil(3.4);

$num4=floor(3.7);

$num5=round(2.5);

$num6=round(-2.5); //取遠離0的整數

//輸出

22.343

3-3

擴充套件:round() 的有關文件

問題:希望一段**在乙個整數範圍內都可以使用。

解決方案:

使用rang($start,$end),產生乙個陣列,或者使用for迴圈實現。

示例

//range()函式可以是數字陣列,也可以是字元陣列。可以使用第三個引數控制步長

//優點是:使用起來比較方便,缺點是:生成不必要的陣列會占用記憶體

$num=range(3,7);

$char=range('a','e');

foreach($num

as$n)

foreach($char

as$c)

//輸出34

567a b c d e

擴充套件:range() 的有關文件

問題:希望在指定的數字範圍內,生成乙個隨機數,如果要讓隨機數可以**,那麼就需要先mt_srand()來初始化,隨機數種子。

解決方案:

使用mt_rand() 相比於 rand(),效能更好,更加不可**。

示例

//mt_rand(min,max)生成的隨機數包括min和max

$num=mt_rand(65,97);

//生成乙個可以**的隨機數

mt_srand(321);

$num1=mt_rand();

mt_srand(321);

$num2=mt_rand();

//輸出

68//這個值不可**

18//這個值與下面的值相同

18

擴充套件:mt_rand() 的有關文件

問題:希望計算乙個數的對數和指數

解決方案:

使用log() 、exp() 、pow()。

示例

//log()表示以e為底的對數,exp()表示以e為底的指數,pow()可以表示乘方

$log1=$log(10);

$log2=$log(10,2); //表示以2為底10的對數

$exp=exp(2);

$pow=pow(2,3); //表示2的三次方,指數可以是小數

//輸出

2.30258

3.32

7.389

8

擴充套件:log() 的有關文件

問題:希望輸出乙個數,要包括千分位分隔符和小數點。或者顯示百分比。

解決方案:

如果總是需要小數點和千分位分隔符等特定字元,可以使用number_format()。

示例

$number = 1234.56;

//預設帶有以,作為千分位分隔符,不保留小數,預設取整。

$formmat_num1=number_format($number);

$formmat_num2=number_format($number,2);

//第三個小數表示小數點分隔符,第四個表示千分位分隔符

$formmat_num3=number_format($number,2,'.',' ');

//輸出

1,234

1,234.56

1234.56

擴充套件:number_format() 的有關文件

PHP經典例項讀書筆記 變數

empty 會告訴你乙個值是否為空。isset 會告訴你乙個值是否設定。空的定義 integer 0 double 0.0 string 空串 string 0 這個要注意字串 0 也為空 boolean false 陣列 array null 物件 empty 在5.5以前只允許傳入引數,5.5以...

讀書筆記 數學之美 筆記

隨便總結的,書都看了,總要留下點印記不是本質就是乙個編譯碼和傳輸的過程 自然語言處理在過去的30年發生了巨大的變化 構建兩個詞表,乙個是基本詞表,乙個是複合詞表,再根據兩個詞表分表建立兩個語言模型 模型1,模型2,先對句子進行模型1分詞,就得到了小顆粒度的分詞結果,在此基礎上,再用大顆粒度的模型2進...

C 學習讀書筆記 陣列

1.c 有幾條關於初始化陣列的規則,他們限制了初始化的時刻 只有在定義陣列時才能使用初始化,此後就不能使用了,也不能將乙個陣列賦予另乙個陣列 int people 4 ok int class 4 ok class 4 not allowed class people not allowed 不過可...