作者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