PHP 變數型別中的一些問題

2021-07-03 02:41:13 字數 1265 閱讀 4011

1:整形:echo 027==??23?為什麼因為027是八進位制數

2:  0.3-0.2==0.1嗎?不等於 為什麼?

因為:浮點數的精度有限。儘管取決於系統,php 通常使用 ieee 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數**算可能會給出更大誤差,並且要考慮到進行復合運算時的誤差傳遞。

此外,以十進位制能夠精確表示的有理數如 0.1 或 0.7,無論有多少尾數都不能被內部所使用的二進位制精確表示,因此不能在不丟失一點點精度的情況下轉換為二進位制的格式。這就會造成混亂的結果:例如,floor((0.1+0.7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是類似7.9999999999999991118...。

所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函式或者 gmp 函式。

3:單雙引號的區別?php單引號及雙引號均可以修飾字串型別的資料,如果修飾的字串中含有變數(例$name);

最大的區別是:

雙引號會替換變數的值,而單引號會把它當做字串輸出。

例如:<?php

$name="string";

echo  " 字串" . '$name';

echo   "字串" .  "$name";

?>

結果:字串$name

字串string

4:在php 中echo 布林型的時候 echo true===>1;echo false===>"" 空字串

布林型雖然只有兩種但是運算很重要例如:

邏輯與  邏輯或 邏輯反 異或

3中輸出(echo,print_r,var_dump())的區別  echo 輸出變數(整形,,浮點型,字串型,都是標量型別)

print_r  ----->物件,陣列

var_dump() 不僅可以列印二維陣列和多維陣列 不僅可以列印陣列本身,還可以列印型別

5:null型   *****==>空   只有乙個值,即null,空,四大皆空

有銀行卡 但是裡面是0元   整型值

無銀行卡  這種情況,值是多少?值就沒有,沒有就是null

乙個變數什麼時候為null

1:給乙個變數,賦值為null

2:某個變數,被unset掉: 銷毀變數

3:只宣告變數,不賦值 

JS變數的一些問題

es5變數提公升 變數提公升 es5 變數提公升 宣告 declare var a function sum 預設值undefined 定義 defined a 12 就是賦值操作 var 只宣告未定義 function 的宣告和賦值,定義 變數提公升只發生當前作用域 開始載入的時候只對全域性作用域...

環境變數的一些問題

我們在安裝交叉編譯時往往需要新增環境變數 有兩個地方可以新增 詳細過程見下 最好不要在profile下新增,否則出錯系統就會癱瘓,登陸不進去,指令也無效 那如果我們不小心剛好就遇到這種情況怎麼辦,別問我自己是怎麼辦,看下面 1登入不了 輸入密碼後一直登入不了 使用快捷鍵ctrl alt f1到f6分...

關於型別轉換的一些問題

今天在寫 時使用乙個long long型別的變數儲存乙個數的累加,最後在輸入的時候發生了溢位。可能發生溢位的可能有幾個地方 1.其實變數並沒有溢位,只是在輸出時沒有使用正確的方式,例如long long型別 在使用printf時 識別符號應該使用 lld,unsigned longlong 應該使用...