作者eejimchan (我那美得不能再美的人生)
看板PHP
標題[請益] for迴圈 神奇的問題
時間Thu Mar 28 23:17:44 2013
大家晚安
想請教一個剛發現的神奇問題,以下是我的程式碼
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
1F:→ MOONRAKER:依照我對for的了解,以及所有語言書都會有的警告 03/28 23:19
2F:→ MOONRAKER:*絕對不要用浮點數做迴圈控制變數* 03/28 23:19
3F:→ MOONRAKER:吸語言浮點數有不精確性,for一樣會有 03/28 23:19
4F:→ MOONRAKER:抱歉,php一樣會有,事實上早在古人寫FORTRAN時就發現了 03/28 23:22
5F:→ eejimchan:哦哦 原來如此~ 感恩M大的指點 :) 03/28 23:24
6F:推 qwertmn:受教.. XD 03/29 00:21
7F:推 hwChang:去查詢浮點數儲存的資訊就會懂囉^^ 03/29 09:55
8F:→ MOONRAKER:沒錯 這是十進位轉二進位的問題 不過解釋起來實在很長 03/29 11:33
10F:→ MOONRAKER:可以在最上面打0.05然後看底下會轉換成什麼 03/29 11:41
11F:推 n6333373:長知識推 03/29 18:43
12F:推 twsphere:受教..長知識了 !! 推一個~ 04/02 13:02