QUANTIZE

QUANTIZE 関数は、値 (丸めが行われる場合は除く) および符号が expression-1 と等しく、また、指数セットが expression-2 内の指数と等しい 10 進浮動小数点値を返します。

構文図を読む構文図をスキップする
>>-QUANTIZE--(--expression-1--,--expression-2--)---------------><

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 特殊値が 関係する場合の結果: 10 進浮動小数点の特殊値 は次のように扱われます。
  • いずれかの引数が NaN であり、 第 1 引数が -NaN でない場合、 NaN が返されます。
  • いずれかの引数が sNaN の場合、警告またはエラーが発生します。 1
  • いずれかの引数が -NaN であり、 第 1 引数が NaN でない場合、 -NaN が返されます。
  • いずれかの引数が -sNaN の場合、警告またはエラーが発生します。 1
  • 両方の引数が Infinity (正または負) の場合、Infinity (正または負) が返されます。
  • 一方の引数が Infinity (正または負) で、もう一方の引数が Infinity (正または負) ではない場合、NaN が返されます。 1

以下の例では、以下の入力 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
1 SQL_DECFLOAT_WARNINGS 照会オプションに *YES を指定すると、NaN が 返され、警告が出されます。