06/03/14 01:24:29
>>250
DECIMAL型について言えば、あれは商業用の機能で、数値計算的にはあまり
利益がないと思う。特に計算スピードはがくっと落ちるはずである。
専門ではないから正確ではないが、商業の世界では利息で生じた小数点以下の
端数をあるところで切り捨てる(または四捨五入?)する慣例がある。浮動小数
点では2進法を使っている関係で丸め誤差から小数点以下の端数の切り捨てで
10進法の時と微妙なズレが生じ、大量の金額に対して計算すると慣例とのズレ
が無視できなくなる。これに対する対策がdecimal型すなわち10進型である。
一般的には、1桁ごとに10進法の数字を1個割り当てて計算するので極めて
計算効率が悪い。1桁につき最低4ビット必要。同じビット数で表される数の
範囲が狭くなってしまう。
(確か8087コプロにもBCD演算機能があったはずだが、固定小数点だったような
気がする。)
数値計算的には、倍精度、倍々精度という方向に行くことはあっても、
10進演算の方向に行くことは特殊な場合を除いてないと思う。
実際FORTRANで10進演算はできないが、利用者からの不満は聞かない。
一方COBOLやPL/Iなどでは10進演算が出来るようになっている。