看板 PHP 關於我們 聯絡資訊
大家晚安 想請教一個剛發現的神奇問題,以下是我的程式碼 for( $c=0; $c<=1.0; $c+=0.05 ){ echo $c." "; } 這樣的code,按照我對for的了解,應該會跑出: 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 但沒想到,最後面的那個「1」竟然沒有印出。 如果改成 for( $c=0; $c<=1.0; $c+=0.2 ){ echo $c." "; } 就沒問題 --> 0 0.2 0.4 0.6 0.8 1 請問大家有遇過這種情形嗎? 超神奇的! 感恩! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.42.22
MOONRAKER:依照我對for的了解,以及所有語言書都會有的警告 03/28 23:19
MOONRAKER:*絕對不要用浮點數做迴圈控制變數* 03/28 23:19
MOONRAKER:吸語言浮點數有不精確性,for一樣會有 03/28 23:19
MOONRAKER:抱歉,php一樣會有,事實上早在古人寫FORTRAN時就發現了 03/28 23:22
eejimchan:哦哦 原來如此~ 感恩M大的指點 :) 03/28 23:24
qwertmn:受教.. XD 03/29 00:21
hwChang:去查詢浮點數儲存的資訊就會懂囉^^ 03/29 09:55
MOONRAKER:沒錯 這是十進位轉二進位的問題 不過解釋起來實在很長 03/29 11:33
MOONRAKER:介紹一個web app http://goo.gl/GnSnq 03/29 11:40
MOONRAKER:可以在最上面打0.05然後看底下會轉換成什麼 03/29 11:41
n6333373:長知識推 03/29 18:43
twsphere:受教..長知識了 !! 推一個~ 04/02 13:02