[請益] for迴圈 神奇的問題

看板PHP作者 (我那美得不能再美的人生)時間11年前 (2013/03/28 23:17), 編輯推噓4(408)
留言12則, 6人參與, 最新討論串1/1
大家晚安 想請教一個剛發現的神奇問題,以下是我的程式碼 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

03/28 23:19, , 1F
依照我對for的了解,以及所有語言書都會有的警告
03/28 23:19, 1F

03/28 23:19, , 2F
*絕對不要用浮點數做迴圈控制變數*
03/28 23:19, 2F

03/28 23:19, , 3F
吸語言浮點數有不精確性,for一樣會有
03/28 23:19, 3F

03/28 23:22, , 4F
抱歉,php一樣會有,事實上早在古人寫FORTRAN時就發現了
03/28 23:22, 4F

03/28 23:24, , 5F
哦哦 原來如此~ 感恩M大的指點 :)
03/28 23:24, 5F

03/29 00:21, , 6F
受教.. XD
03/29 00:21, 6F

03/29 09:55, , 7F
去查詢浮點數儲存的資訊就會懂囉^^
03/29 09:55, 7F

03/29 11:33, , 8F
沒錯 這是十進位轉二進位的問題 不過解釋起來實在很長
03/29 11:33, 8F

03/29 11:40, , 9F
介紹一個web app http://goo.gl/GnSnq
03/29 11:40, 9F

03/29 11:41, , 10F
可以在最上面打0.05然後看底下會轉換成什麼
03/29 11:41, 10F

03/29 18:43, , 11F
長知識推
03/29 18:43, 11F

04/02 13:02, , 12F
受教..長知識了 !! 推一個~
04/02 13:02, 12F
文章代碼(AID): #1HL5yQi_ (PHP)