くだすれPHP(超初心者用)3at PHPくだすれPHP(超初心者用)3 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト550:nobodyさん 08/03/14 20:32:53 質問です。 よければ教えてください。 echo 45 * 1.4; echo "<br>"; $a = floor(45 * 1.4); echo $a; echo "<br>"; というプログラムで、結果が 63 62 となるんですけど、原因がわかりません… 63が正解なのですが、なぜなんでしょう? 実際は変数が入るので、結果も変動して小数点以下の数値も出るのでfloorしていますが、 なぜかこの数値の時だけ結果にずれが… 551:nobodyさん 08/03/14 20:54:07 >>550 典型的な、浮動小数点誤差の問題だね。 一般的にコンピュータは数値を二進数に変換して処理する。 1.4という数値は二進数では近い数字は表現できても、 1.4そのものは表現できない数値なんだ。(小数点以下が無限に続く) よって 45 × 1.3999・・・という計算になる。 当然答えも62.9999・・・になる。 あとはechoのとき、62.9999・・・というほぼ63という値なら、 それを63にして表示しているということだろう。 公式サイトにも書いてあるが。 http://www.php.net/manual/ja/language.types.float.php 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch