COMPARE_DECFLOAT
COMPARE_DECFLOAT 関数は DECFLOAT 値の順序付けを返します。
COMPARE_DECFLOAT 関数は、expression-1 と expression-2 の比較方法を示す短精度整数値を戻します。
- expression-1
- 任意の組み込み数値、文字ストリング、 またはグラフィック・ストリングのデータ・タイプの値を戻す式。 引数が DECFLOAT(34) でない場合、その引数は処理のために DECFLOAT(34) に論理的に変換されます。
- expression-2
- 任意の組み込み数値、文字ストリング、 またはグラフィック・ストリングのデータ・タイプの値を戻す式。 引数が DECFLOAT(34) でない場合、その引数は処理のために DECFLOAT(34) に論理的に変換されます。
最初の引数が 2 番目の引数と比較され、結果は以下の規則に従って返されます。
- 両方のオペランドが有限の場合、比較は代数の場合と同様に行われ、DECFLOAT の減算の規則に従います。差がいずれかの符号を持つゼロで、小数点以下のゼロの数が同じである場合、それらの引数は等しくなります。差がゼロ以外で正の場合、最初の引数は 2 番目の引数より大きくなります。 差がゼロ以外で負の場合、最初の引数は 2 番目の引数より小さくなります。
- 正のゼロおよび負のゼロは、比較により等しいと判断されます。
- 正の無限大は、比較により負の無限大と等しくなります。
- 正の無限大は、比較によりどの有限数より大きくなります。
- 負の無限大は、比較により負の無限大と等しくなります。
- 負の無限大は、比較によりどの有限数より小さくなります。
- 数値の比較は正確です。有限オペランドの結果は、範囲と精度が無制限の場合と同様に求められます。 オーバーフローまたはアンダーフローが起こってはなりません。
- いずれかの引数が NaN または sNaN (正または負) の場合、結果は順序付け不能となります。
結果の値は次のように設定されます。
0 | 引数が正確に等しい場合。 |
1 | expression-1 が expression-2 より小さい場合。 |
2 | expression-1 が expression-2 より大きい場合。 |
3 | 引数が順序付け不能の場合。 |
関数の結果は SMALLINT になります。引数のどちらかが NULL になる可能性がある場合は、結果も NULL になる可能性が あります。引数のどちらかが NULL である場合は、結果は NULL 値になります。
例
次の例に、この関数が使用されたときに返される値を示します。
COMPARE_DECFLOAT (DECFLOAT(2.17), DECFLOAT(2.17)) = 0
COMPARE_DECFLOAT (DECFLOAT(2.17), DECFLOAT(2.170)) = 2
COMPARE_DECFLOAT (DECFLOAT(2.170), DECFLOAT(2.17)) = 1
COMPARE_DECFLOAT (DECFLOAT(2.17), DECFLOAT(0.0)) = 2
COMPARE_DECFLOAT (INFINITY, INFINITY) = 0
COMPARE_DECFLOAT (INFINITY, -INFINITY) = 2
COMPARE_DECFLOAT (DECFLOAT(-2), INFINITY) = 1
COMPARE_DECFLOAT (NAN, NAN) = 3
COMPARE_DECFLOAT (DECFLOAT(-0.1), SNAN) = 3