質問掲示板

CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。

新規発言一覧最新記事過去一覧 | 検索HOME
No.99  Re[2]:なんでやねーん!(PHPバグ?)
発言者: あ---、なる。わかった。
発言日: 2003 12/17 01:18
発言元: 218.46.238.117
 
for ($i=0.5;$i<1.0;$i+=0.1) {
echo "$i ";
echo intval($i);
echo "<br>";
}
if($i == 1.0){ print 'マチュピチュ!!'; }

のループ試してわかったんだけど、
多分0.01を100回足しても1にならない(倍精度浮遊少数の場合)
と同じ現象のような気がする。
いわゆる、ビットによる計算誤差ね。

0.01以下のオーダーと
0.1でのオーダーでビット数が違うため(変数タイプが違う)
に計算結果が変ったものと推定。
まあPHP,PERLではPGが意識的に変数定義しないからねぇ。

[上のループの結果]
0.5 0
0.6 0
0.7 0
0.8 0
0.9 0
1 0

マチュピチュ!!は表示されず。

▼関連発言

96:なんでやねーん!(PHPバグ?) [moon] 12/12
 └97:Re:なんでやねーん!(PHPバグ?) [とむ] 12/17
  ├98:Re[2]:なんでやねーん!(PHPバグ?) [とむ] 12/17
  └99:Re[2]:なんでやねーん!(PHPバグ?) [あ---、] 12/17
   └100:さんきゅー [moon] 12/17 <

Pass 保存

CGIROOM