小数型データ、浮動小数型データ、および実数型データの使用

decimal 型には、最大 38 桁を格納できます。全桁が小数点以下の桁にすることも可能です。decimal 型では、値が概数に変換されず、正確な数値表現として格納されます。

decimal 型の列、変数、およびパラメータを定義する 2 つの属性を次に説明します。

  • p

    有効桁数、つまりオブジェクトが保持できる桁数を示します。

  • s

    小数点以下桁数、つまり小数点の右側に格納できる桁数を示します。

    p と s は、0 <= s <= p <= 38 という規則に従う必要があります。

numeric 型と decimal 型の有効桁数の既定の最大値は 38 桁です。Transact-SQL では、numeric 型は機能的には decimal 型と同等です。

decimal 型は、小数部がある数値を指定どおり正確に格納する必要がある場合に使用します。

数学演算が、結果の有効桁数と小数点以下桁数に与える影響の詳細については、「有効桁数、小数点以下桁数、および長さ (Transact-SQL)」を参照してください。

浮動小数点型データと実数型データの使用

float 型と real 型を概数型と呼びます。float 型と real 型の動作は、概数型についての IEEE 754 仕様に従います。

概数型では、多くの場合、指定されたとおり正確な値が格納されません。正確な値にきわめて近い概数が格納されます。多くのアプリケーションでは指定した値と格納される概数のわずかな差は問題にはなりません。ただし、その差が問題になる場合もあります。float 型と real 型にはこのような概数の性質があるので、財務アプリケーション、丸めが行われる演算、等価性のチェックなど、正確な数値動作が必要な場合には、これらのデータ型を使用しないでください。代わりに、int 型、decimal 型、money 型、smallmoney 型を使用してください。

WHERE 句の検索条件、特に、= 演算子、<> 演算子では float 型や real 型を使用しないでください。float 列や real 列の比較を、> 比較または < 比較に限定することをお勧めします。

IEEE 754 仕様では、一番近い値に丸める、切り上げる、切り捨てる、0 に丸める、の 4 つの丸めモードがあります。Microsoft SQL Server では切り上げが使用されます。数値はすべて保証された有効桁数までは正確ですが、得られる浮動小数点値に多少の差が生じることがあります。浮動小数点数の 2 進表現では、さまざまな丸め方法が使われる可能性があるため、浮動小数点値を正確な値として扱うことは不可能です。