[PHP-users 1521] Re: 小数点以下の四捨五入について

Naofumi Kondoh php-users@php.gr.jp
Fri, 24 Aug 2001 23:51:50 +0900


ソフト工房の近藤です。

Osamu Shigematsu wrote:
> 
> 重松です。こんにちは。
> 
> 近藤さん、フォロー頂きありがとうございます。
> 
> > round() 関数ですが、PHP3 と PHP4 では、実行結果が
> > 違うようなので注意が必要です。

...略....

> マニュアルでは、「四捨五入」とありますね。

「四捨五入」だと誤解を与えるので、最近のマニュアルは、
次のような訳注がついてますね。

http://www.php.net/manual/ja/function.round.php

--------------- 引用 -----------------------
 (訳注:内部的な 2進数表現と10進数表現の差により
生じる丸め誤差の影響により 必ずしも小数点以下
を四捨五入した結果を返さないことに注意して下さい。) 
--------------- 引用 -----------------------

...略....
> > 行なう方式です。google などで Banker's Rounding とか
> > IEE754 で検索してみてください。
>   ~~~~~~
> 
> IEEE ですよね?

タイプミスです。アイトリプルイーです。ご指摘恐縮。

> あと、個人的には、2 進浮動小数演算なので、10 進数での希望の精度が得られない、
> ということもキチンと考える必要がある問題と思います。

そうですね。

積算見積りとか、金利計算とか、厳密な十進演算が要求
される場合は、BCD 関数を使うべきですね。

私が不思議に思うのは、20年以上前の超低性能のコン
ピューター(汎用機)には、マクロアセンブラレベルで
十進演算が組込まれていたのに、昨今の超々高性能な
CPU には、なんでアセンブラレベルで十進演算が入っ
てないんでしょうね。

聞くところによると、Excel のような事務処理でよく
使う表計算ソフトも十進演算ではないらしい。

PC の利用者数からいえば、技術屋よりも事務屋さんの
方が圧倒的に多いはずなので、デフォルトは、十進演算
とすべきだと思うのですが。

「専門家」と称する人の考えている事は理解できない
です。(^_^)。

 
> 以前、他の ML で特定の値がキチンと代入できないからバグだと騒ぐ、頭がバグって
> る御仁がいらっしゃったのですが、あれは参りました。
> http://rb.vio.co.jp/mlspool/msg08327.html

まあ、どこにでもそういう方がいらっしゃるようで。
# 東京人の国政参加権利は島根人の1/4でしたっけ。(違憲状態)。
# 日本人は数字に鈍感なんですね。(ジョークです。念のため)。

----------------------
nkon@shonan.ne.jp