[PHP-users 24731] Re: 四捨五入

utsunomiya kanryu @ aurora.dti.ne.jp
2005年 2月 27日 (日) 02:45:02 JST


> round()でも同様でした。
> OSの問題のようですね。

apacheの問題でもなければ
PHPの問題でもなく、
OSの問題でもありません。
これは浮動小数点数の内部表現の問題です。


原則最上位ビットが1にして使用される数値部と
桁を表す10の累乗部から構成される浮動小数点数は
1.005という10進小数を正確に表すことができません。
したがってそれに最も近い値が代わりに用いられ、
1.004999...という値になります。
正確に取り扱いたいときにはBCDコードで数値を表現してから
計算に用いる必要があるでしょうが、
それはPHPのような簡易言語の範囲を超えているかもしれません。
(サポート状況を調べたわけではないのであしからず)




PHP-users メーリングリストの案内