QUANTIZE
QUANTIZE 関数は、値 (丸めが行われる場合は除く) および符号が expression-1 と等しく、また、指数セットが expression-2 内の指数と等しい 10 進浮動小数点値を返します。
- expression-1
- 任意の組み込み数値、文字ストリング、 またはグラフィック・ストリングのデータ・タイプの値を戻す式。 引数のデータ・タイプが DECFLOAT 値でない場合、そのデータ・タイプは処理を行うために DECFLOAT(34) に変換されます。
- expression-2
- 任意の組み込み数値、文字ストリング、 またはグラフィック・ストリングのデータ・タイプの値を戻す式。 引数のデータ・タイプが DECFLOAT 値でない場合、そのデータ・タイプは処理を行うために DECFLOAT(34) に変換されます。
一方の引数 (変換後) が DECFLOAT(16) で、もう一方の引数が DECFLOAT(34) の場合、この関数の処理が行われる前に DECFLOAT(16) の引数が DECFLOAT(34) に変換されます。
結果の係数は、expression-1 の係数から派生したものです。この係数は、必要に応じて、丸められたり (指数が増えている場合)、10 の累乗で乗算されたり (指数が減っている場合)、あるいは未変更のままにされます (既に指数が expression-2 の指数に等しい場合)。
必要であれば、QUANTIZE 関数で丸めモードが使用されます。詳しくは、CURRENT DECFLOAT ROUNDING MODEを参照してください。
DECFLOAT データ・タイプでの他の算術演算とは異なり、量子化演算後の係数の長さが結果の DECFLOAT 数値の精度より長い場合は、エラーが発生します。これにより、エラーが発生しない限り、QUANTIZE 関数の結果の指数は必ず expression-2 の指数と等しくなります。
この関数の結果は、両方の引数が DECFLOAT(16) の場合は DECFLOAT(16) の値になります。 そうでない場合、この関数の結果は DECFLOAT(34) の値になります。引数のどちらかが NULL になる可能性がある場合は、結果も NULL になる可能性が あります。引数のどちらかが NULL である場合は、結果は NULL 値になります。
注記
例
以下の例では、以下の入力 DECFLOAT 値の場合に、QUANTIZE 関数で返される値を示しています。
QUANTIZE(2.17, 0.001) ==> 2.170
QUANTIZE(2.17, 0.01) ==> 2.17
QUANTIZE(2.17, 0.1) ==> 2.2
QUANTIZE(2.17, 1e+0) ==> 2
QUANTIZE(2.17, 1e+1) ==> 0E+1
QUANTIZE(2, Infinity) ==> NaN (exception)
QUANTIZE(0, 1e+5) ==> 0E+5
QUANTIZE(217, 1e-1) ==> 217.0
QUANTIZE(217, 1e+0) ==> 217
QUANTIZE(217, 1e+1) ==> 2.2E+2
QUANTIZE(217, 1e+2) ==> 2E+2
次の例では、QUANTIZE 関数に対して値 -0 が戻ります。CHAR 関数を使用すると、クライアント・プログラムによって負符号 (-) が除去されないようにできます。
CHAR(QUANTIZE(-0.1, 1)) ==> -0