[PHP-users 1518] Re: 小数点以下の四捨五入について
Osamu Shigematsu
php-users@php.gr.jp
Fri, 24 Aug 2001 22:07:17 +0900
重松です。こんにちは。
近藤さん、フォロー頂きありがとうございます。
> round() 関数ですが、PHP3 と PHP4 では、実行結果が
> 違うようなので注意が必要です。
>
> PHP3: round(2.5) は、2 になります。(PHP 3.0.18 国際化版)
> PHP4: round(2.5) は、3 になります。(PHP 4.04 )
> OS : Linux (TLJ WS 6.0) glibc-2.1.2
>
> 仕様変更になったんですかね。
>
> マニュアルでは違いが読み取れないですが、ソース見てる
> 暇がないのでどなたか詳しい方、フォローお願い。
マニュアルでは、「四捨五入」とありますね。
> 少くとも PHP3 の round()は、所謂四捨五入ではなく、
> Banker's Rounding という方式で、小数部が .5 の時、
> 常に切り上げるのではなく、切り上げ/切捨てを交互に
> 行なう方式です。google などで Banker's Rounding とか
> IEE754 で検索してみてください。
~~~~~~
IEEE ですよね?
あと、個人的には、2 進浮動小数演算なので、10 進数での希望の精度が得られない、
ということもキチンと考える必要がある問題と思います。
以前、他の ML で特定の値がキチンと代入できないからバグだと騒ぐ、頭がバグって
る御仁がいらっしゃったのですが、あれは参りました。
http://rb.vio.co.jp/mlspool/msg08327.html
--
Osamu Shigematsu
http://www.ravi.ne.jp/
mailto:shige@ravi.ne.jp