QUANTIZE スカラー関数

QUANTIZE 関数は、値 (丸め以外) において等しく、numeric-expression と符号が等しく、exp-expression の指数と等しい指数を持つ、10 進浮動小数点値を戻します。

桁数 (16 または 34) は、numeric-expression の桁数と同じです。
Read syntax diagramSkip visual syntax diagramQUANTIZE(numeric-expression ,exp-expression)

スキーマは SYSIBM です。

numeric-expression
組み込み数値データ・タイプの値を戻す式。 引数が 10 進浮動小数点値ではない場合、処理のために DECFLOAT(34) に変換されます。
exp-式
組み込み数値データ・タイプの値を戻す式。 引数が 10 進浮動小数点値ではない場合、処理のために DECFLOAT(34) に変換されます。 exp-expressionnumeric-expression のスケール変更のパターン例として使用されます。 exp-expression の符号および係数は、無視されます。

結果の係数は、numeric-expression の係数から派生します。 必要な場合 (指数が増加している場合) には、丸められるか、10 の累乗で乗算されるか (指数が減少している場合)、または変更されないままです (指数が既に exp-expression の指数と等しい場合)。

CURRENT DECFLOAT ROUNDING MODE 特殊レジスターは、丸めモードを決定します。

10 進浮動小数点データ・タイプの他の算術演算とは異なり、量子化演算の後に係数の長さが exp-expression によって指定された精度より大きくなる場合、結果は NaN になり、警告が戻されます (SQLSTATE 0168D)。 これにより、警告条件がない場合には、QUANTIZE の結果の指数は常に exp-expression の指数と等しくなります。

  • どちらかの引数が NaN の場合は、NaN が戻されます。
  • どちらかの引数が sNaN の場合は、NaN が戻され、警告が戻されます (SQLSTATE 01565)。
  • 両方の引数が無限大 (正または負) である場合は、最初の引数と同じ符号の無限大が戻されます。
  • 一方の引数が無限大 (正または負) であり、他方の引数が無限大ではない場合、NaN が戻され、警告が戻されます (SQLSTATE 0168D)。

両方の引数が DECFLOAT(16) である場合、関数の結果は DECFLOAT(16) 値になります。 そうでない場合には、関数の結果は DECFLOAT(34) 値になります。 結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。

  • 例 1: 以下の例は、さまざまな 10 進浮動小数点値の入力が与えられ、ROUND_HALF_UP の丸めモードを取った場合に QUANTIZE 関数によって戻される値を示しています。
    QUANTIZE(2.17, DECFLOAT(0.001)) = 2.170 
    QUANTIZE(2.17, DECFLOAT(0.01)) = 2.17 
    QUANTIZE(2.17, DECFLOAT(0.1)) = 2.2 
    QUANTIZE(2.17, DECFLOAT('1E+0')) = 2 
    QUANTIZE(2.17, DECFLOAT('1E+1')) = 0E+1 
    QUANTIZE(2, DECFLOAT(INFINITY)) = NaN    -- warning 
    QUANTIZE(0, DECFLOAT('1E+5')) = 0E+5 
    QUANTIZE(217, DECFLOAT('1E-1')) = 217.0 
    QUANTIZE(217, DECFLOAT('1E+0')) = 217 
    QUANTIZE(217, DECFLOAT('1E+1')) = 2.2E+2 
    QUANTIZE(217, DECFLOAT('1E+2')) = 2E+2
  • 例 2: 以下の例では、QUANTIZE 関数に対して値 -0 が返されます。 CHAR 関数が使用されているのは、クライアント・プログラムにより負符号 (-) が除去される可能性をなくすためです。
    CHAR(QUANTIZE(-0.1, DECFLOAT(1))) = -0