# DECIMAL データ型

DECIMALにより精度と目盛りを指定して正確な数を扱えます。 この型では精度(小数点の左右の桁数の合計)と目盛り(小数点以下の桁数)を指定できます。 記憶装置にて必要とされる領域のサイズは、精度により決まります。

#### 構文

    { DECIMAL | DEC } [(精度 [, 目盛り ])]

精度は1から31の数をとります。目盛りは精度以下の数をとります。

目盛りが指定されなかった場合の既定値は0となります。精度が指定されなかった場合の既定値は5となります。

DECIMALに代入することが可能なのは、小数部以外が失われない範囲の数です。 DECIMALの値から小数部を無くする場合、Derbyは切捨てを行います。

例えば、

    -- この型変換で失われるのは小数部のみです。
    values cast (1.798765 AS decimal(5,2));
    1
    --------
    1.79
    -- この型変換はうまく行きません。
    values cast (1798765 AS decimal(5,2));
    1
    --------
    ERROR 22003: The resulting value is outside the range
    for the data type DECIMAL/NUMERIC(5,2).

他のデータ型が式にて混在して利用されていた場合、式の結果となる型は式にて行われる数値型の項目で書かれたとおりに決まります。

数値を異なる数値型の列に記録するも参照してください。

二つのDECIMALの値が式にて用いられていた場合、式の結果となる型は小数を計算するときの目盛りに記述された規則に従って決まります。

#### 対応するコンパイル時のJavaの型

java.math.BigDecimal

#### JDBC のメタデータ型 (java.sql.Types)

DECIMAL

    VALUES 123.456

    VALUES 0.001

BIGINTには大きすぎる整数の定数は、DECIMALの定数となります。

親トピック: データ型