Re: [請益] 數值大小於問題

作者: GALINE (天真可愛CQD)   2016-10-11 22:01:26
※ 引述《kiey (煉)》之銘言:
: $a = 14525.8000;
: $b = 1231.0000;
: $c = 11.8;
: $d = floor($b)*$c;
: echo $a*1 < ($b*$c)? 'true ':'false ' ; //T
: echo round($a,4) > round(floor($b)*$c,4)? 'true ':'false ' ; //F
: echo $a < $d? 'true ':'false ' ; //T
: 想請問一下 為什麼結果會是 true false true 呢?
: 就我的觀念應該是要 f f f 才對 = =
: 有請先進指教
推薦搜尋關鍵字:「浮點數 誤差」或「浮點數 精確度」
用白話說明是這樣
PHP(跟幾乎所有電腦程式)的小數是用浮點數來表示的
而浮點數常常會跟你實際要的數字差一點點,很小一點
所以
- 多做幾次運算可能會出現奇妙的尾差
- 拿來比大小通常 OK,但是數字應該要一樣的時候有時會爆炸
然後整數沒這個問題
===============================
另外你可以試一下
$a = 14525.8000;
$b = 1231.0000;
$c = 11.8;
$d = floor($b)*$c;
var_export($a);
echo "\n";
var_export($b*$c);
echo "\n";
var_export($d);
echo "\n";
在我的電腦上輸出結果是:
14525.799999999999
14525.800000000001
14525.800000000001
作者: LPH66 (-6.2598534e+18f)   2016-10-12 00:01:00

Links booklink

Contact Us: admin [ a t ] ucptt.com