浮動小数点数の代替手段について
More Floating Point Alternatives (wizardzines.com)
要約
この記事では、コンピュータサイエンスにおける浮動小数点数の表現方法の代替手段を5つ紹介しています。これらはソフトウェア実装のためハードウェア実装より遅いですが、十進浮動小数点数、分数、記号計算、区間演算、BCD(Binary-Coded Decimal)といった方法があります。それぞれの特徴と、PythonやMathematicaなどの具体的な例が挙げられています。
全文翻訳
浮動小数点数の代替手段
[画像: 笑顔の棒人間]
[画像: コミックの画像。完全なHTMLのaltテキストを読むには、「トランスクリプトを読む」をクリックしてください。]
トランスクリプトを読む!
数値を表現する多くの代替方法があります
これらはすべてソフトウェア(ハードウェアではない)で実装されているため、はるかに遅く、言語によってライブラリが異なります。
代替手段1:10進数浮動小数点数
これは通常の浮動小数点数に似ていますが、基数が2ではなく10です。IEEE 754でも標準化されています。
例:PythonのdecimalモジュールやJavaのBigDecimal
代替手段2:分数
これにより、分数を使った正確な計算ができます(1/10 + 2/10 = 3/10)。
例:標準ライブラリのPythonのfractionsモジュール、Lispにはファーストクラスのサポートがあります。
代替手段3:記号計算
例えば、1.414の代わりにsqrt(2)。
Mathematica、Maple、sympyのようなコンピュータ代数システムで見られます。
代替手段4:区間演算
このアイデアは、誤差範囲を正確に追跡できるように、すべての数値を範囲として格納することです。
おそらく、これらの代替手段の中で最も主流ではないものです。
代替手段5:2進化10進数(BCD)
これは、1960年代のIBMコンピュータで浮動小数点数(および整数)がどのように格納されていたかであり、金融取引のためのISO 8583のような古い形式で今でも時折見かけることがあります。