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

看板PHP作者 (天真可愛CQD)時間8年前 (2016/10/11 22:01), 8年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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 -- Sent from my little pony -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.53.129 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1476194491.A.E72.html ※ 編輯: GALINE (114.27.53.129), 10/11/2016 22:07:28
文章代碼(AID): #1N_F2xvo (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1N_F2xvo (PHP)