ESQL DECIMAL データ・タイプ

DECIMAL データ・タイプは、10 進数をそのまま保持します。10 進数には、精度、位取り、および丸めがあります。精度とは数値の桁の合計数のことです。
  • 最小精度は 1
  • 最大精度は 34
位取りとは小数点以下の桁数のことです。
  • 最小位取り (-exponent) は -999,999,999
  • 最大位取り (-exponent) は +999,999,999

DECIMAL を宣言するときに、精度と位取りを定義することはできません。これらは、自動的に割り当てられるからです。精度と位取りを指定できるのは、DECIMAL へのキャストを行うときだけです。

位取り、精度、および丸め

以下の位取り、精度、および丸め規則が適用されます。
  • 最大精度内を維持するために丸めが必要ない場合、加算または減算の結果の位取りは、2 つのオペランドの位取りより大きくなります。
  • 最大精度内を維持するために丸めが必要ない場合、乗算の結果の位取りは、2 つのオペランドの位取りの合計となります。
  • 除法の結果の精度は、結果を正確に表すために必要な桁数および最大精度よりも小さくなります。
  • 加算、減算、乗算、除法の計算はすべて、必要に応じて最下位数字を丸め、最大精度内に収まるようにします。
  • すべての自動丸めは、銀行型丸め、つまり二等分シンメトリック方式 の丸めです。この規則は次のとおりです。
    • 最初に除去された数字が 4 以下のとき、最初に保存した数字はそのままとなる
    • 最初に除去された数字が 6 以上のとき、最初に保存した数字は増分する
    • 最初に除去された数字が 5 のとき、最初に保存した数字は、奇数の場合増分し、偶数の場合そのままとなる。そのため、1.5 と 2.5 のどちらも 2 となり、3.5 と 4.5 のどちらも 4 となります
    • 負の数字は同じ規則に従って丸められる

10 進リテラル

引用符で囲まれていない数字ストリングのみで構成される、つまり、小数点と指数のどちらも含まない 10 進リテラル (12345 など) は、整数で表現できる大きさの場合は INTEGER タイプになります。それ以外の場合は、DECIMAL タイプになります。

引用符で囲まれていない数字ストリングと、オプションで小数点、および指数で構成される 10 進リテラル (123e1 など) は、浮動小数点で表現できる大きさの場合は FLOAT タイプとなります。それ以外の場合は、DECIMAL タイプになります。

キーワード DECIMAL と引用符付き数字ストリングで構成される 10 進リテラルは、小数点および指数の有無に関わらず、DECIMAL タイプとなります。例えば、DECIMAL '42'、DECIMAL '1.2346789e+203' などです。

このリテラル・タイプのストリングには、次の値も含まれる場合があります。
  • 'NAN'、非数値
  • 'INF'、'INFINITY'
  • '+INF'、'+INFINITY'
  • '-INF'、'-INFINITY'
  • 'MAX'
  • 'MIN'
これは、(大/小文字混合の場合でも) 対応する値を示すためです。
変更の始まり以下の例に示されているようにして十分な桁の精度を指定しなかった場合、INF が戻される点に注意してください。
 SET VAL [equals char] CAST('123456' AS DECIMAL(3,0))
変更の終わり
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak17820_