fetus Diary

2007/09/18(火) - round(0.49999999999)

Linux x86 上の PHP 5.1.6 (fedora)

[fetus@SUZURI ~]$ php -r 'var_dump(round(0.49999999999));'
float(1)

Linux x86 上の PHP 5.2.2 (fedora)

[fetus@MAYURA ~]$ php -r 'var_dump(round(0.49999999999));'
float(1)

Linux x86-64 上の PHP 5.2.2 (fedora)

[fetus@RIM ~]$ php -r 'var_dump(round(0.49999999999));'
float(0)

Linux x86 上の PHP 4.3.9 (CentOS)

[******@amefurashi ~]$ php -q hoge.php
float(1)

Windows XP x86 上の PHP 5.0.5(cgi)

C:\PHP>php-cgi -q hoge.php
float(0)

驚くほど環境依存。まあ、configure の結果で定数値が変わるから当然なんだけど。

個人的に、こんなに桁数の多い浮動小数点数なんぞ全く信用していない(数字によっては正確に 2 進数で表されるけど、それ以外の値は不正確なんだから実用上不正確の方が多いんじゃないの?)ので困らないけど。私が PHP で少数を扱うのなんて、せいぜいバイト→human-readable な表示形式(kiB とか MiB とか)くらいだから、表示用途で全く問題なし。

コメント

コメントはありません。

名前
メール
コメント

※HTML タグは使えません。HTTP URL には自動リンクが張られます。

Captcha
画像から読み取れる文字を入力: