任意精度
読み:にんいせいど
コンピューター内部における数値演算の方法の一つで、数値の精度が、メモリーの容量(と演算するプロセッサーの処理速度)のみに制限される手法。
概要
一般的な整数演算、実数演算は、プロセッサーがハードウェアとして持つ計算機の性能に依存する。
この手法はハードウェアで処理するため高速であるが、桁数や精度には大きな制限が存在する。
また、プロセッサーが持つ計算機は基数を2とするため、10進数(基数10)では有限小数である0.1のような値でも基数2では無限小数となってしまい正確に表現できず、結果として誤差が生じるなどの問題もある。
そこで、処理速度は非常に遅くなるが、必要な桁数や精度を得るためこの演算処理をソフトウェアで実装したものが使われており、そのうちの一つが任意精度の演算である。演算速度を重視せず、大きな数の演算や演算精度が要求される分野で用いられている。
特徴
実装
COBOLは、プログラミング言語の言語仕様として任意精度演算が可能となっている。これが、COBOLが正確な演算を要求される分野でいまだ現役かつ主役の座を誇っている理由である。
その後、様々なプログラミング言語用に、任意精度演算を行なうための実装が作られた。C/C++には言語仕様としては任意精度演算は存在しないが、様々なライブラリが商用製品からフリーソフトウェアまで揃っている。
Javaでは、任意精度演算として実数用のjava.math.BigDecimalと整数用のjava.math.BigIntegerが用意された。
基数
10進数演算での精度を維持するため、基数を10として実装するものが多い。
このため、基数を2としてハードウェアで演算していた場合に生じていた丸め誤差などが生じない。
再検索