[PHP-users 1517] Re: 小数点以下の四捨五入について
Naofumi Kondoh
php-users@php.gr.jp
Fri, 24 Aug 2001 21:47:40 +0900
ソフト工房の近藤です。
Osamu Shigematsu wrote:
>
> 重松です。
>
> とりあえず、四捨五入にはならないですが、
> sprintf(), number_format() を使うという方法もありますね。
> あとは、0.0005 を足すとか?
> # それなら、素直に、1000 倍して round() して、1000 で割ればよい気もしますし。
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
仕様変更になったんですかね。
マニュアルでは違いが読み取れないですが、ソース見てる
暇がないのでどなたか詳しい方、フォローお願い。
http://www.php.net/manual/ja/function.round.php
少くとも PHP3 の round()は、所謂四捨五入ではなく、
Banker's Rounding という方式で、小数部が .5 の時、
常に切り上げるのではなく、切り上げ/切捨てを交互に
行なう方式です。google などで Banker's Rounding とか
IEE754 で検索してみてください。
# 確か整数部が偶数で .5 の時は切捨て、奇数の時は
# 切り上げだと思いました。
過去ログ検索で、 round で検索してみてください。
http://ns1.php.gr.jp/cgi-bin/namazu.cgi
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon@shonan.ne.jp
PostgreSQL+PHP ソースコードジェネレーター セミナースライド
http://www.shonan.ne.jp/~nkon/cslpg.a.semi/
http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/