[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