5.5 decimal -- 10進浮動小数点数の算術演算

バージョン 2.4 で 新たに追加 された仕様です。

decimal モジュールは10 進の浮動小数点算術をサポートします。 decimal には、 float() データ型に比べて、以下のような 利点があります:

このモジュールは、 10 進数型、算術コンテキスト (context for arithmetic)、 そしてシグナル (signal) という三つの概念を中心に設計されています、

10 進数型は変更不可能な型です。この型には符号部、仮数部、そして指数部 があります。有効桁数を残すために、仮数部の末尾にあるゼロの切り詰めは 行われません。 decimal では、 Infinity, -Infinity, および NaN といった特殊な値も定義されています。 標準仕様では -0+0 も区別しています。

算術コンテキストとは、精度や値丸めの規則、指数部の制限を決めている 環境です。この環境では、演算結果を表すためのフラグや、演算上発生した 特定のシグナルを例外として扱うかどうかを決めるトラップイネーブラも 定義しています。丸め規則にはROUND_CEILING, ROUND_DOWN, ROUND_FLOOR, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_HALF_UP, および ROUND_UP があります。

シグナルとは、演算の過程で生じる例外的条件です。個々のシグナルは、 アプリケーションそれぞれの要求に従って、無視されたり、単なる情報と みなされたり、例外として扱われたりします。decimal モジュール には、Clamped, InvalidOperation, DivisionByZero, Inexact, Rounded, Subnormal, Overflow, および Underflow といったシグナルがあります。

各シグナルには、フラグとトラップイネーブラがあります。演算上 何らかのシグナルに遭遇すると、フラグはゼロからインクリメントされて ゆきます。このとき、もしトラップイネーブラが 1 にセットされて いれば、例外を送出します。フラグの値は膠着型 (sticky) なので、 演算によるフラグの変化をモニタしたければ、予めフラグをリセット しておかねばなりません。

参考:

IBM による汎用 10 進演算仕様、 The General Decimal Arithmetic Specification

IEEE 標準化仕様 854-1987, IEEE 854 に関する非公式のテキスト



ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。