固定小数点データ

固定小数点数は p 桁の数値です。固定小数点 10 進数では、そのうちの q 桁を小数として表現できます。固定小数点 2 進数は、常に整数 (q=0) です。次に例を示します。

DECLARE K FIXED BINARY(15); 
DECLARE D FIXED DECIMAL(7,2);

この例の K の値は、2 進 15 桁の固定小数点整数です。したがって、K は -32768 ~ +32767 (-(2**⊃15) ~ (2**⊃15)-1) の範囲の任意の値を保持できます。D の値は、10 進 7 桁の固定小数点数で、そのうちの 2 桁が小数です。したがって、D は -99999.99 ~ +99999.99 の範囲の任意の値を保持できます。

DECLARE U FIXED BINARY(16) UNSIGNED;

K の値は、2 進 16 桁の固定小数点整数です。したがって、K は 0 ~ 65,535 または 0 ~ (2** 16)-1 の範囲の任意の値を保持できます。

ほとんどのコンピューターでは 2 進整数を使用した場合に最も高い演算効率が得られるため、可能な限り固定長バイナリ変数を使用することをお奨めします。添字、文字列の長さ、DO 索引変数などには、固定長バイナリ変数を使用した方が効率が非常に高くなります。

固定長バイナリ変数のデフォルトの精度は、-longint コンパイラ オプションを使用して 15 から 31 に変更できます。詳細については、『Open PL/I ユーザー ガイド』を参照してください。

一般に、固定小数点 10 進値は、2 進数で表現した場合よりも格納に多くのビットを必要とし、計算が複雑になることもよくあります。一方で、外部形式との間の変換 (入出力時など) は固定小数点 10 進値の方が効率的です。また、場合によっては、固定小数点 10 進値を使用した方が 2 進表現よりも丸めエラーが少なくなる可能性があります。

固定小数点 10 進値の計算では、値が大きすぎてサポートされない場合、計算時に ERROR 状態のシグナルが発生します。固定小数点 2 進値の場合は、値が大きすぎてサポートされない場合でも計算時にエラーは発生せず、予期しない結果が生じる可能性があります。精度とスケールの規則については、「データ型変換」の章を参照してください。

10 進値と 2 進値の両方を含む演算の結果は、常に 2 進値になります。ただし、結果に小数部が含まれる場合は 10 進値になります。

固定小数点値を文字列またはビット文字列に変換する場合、変換後の長さは固定小数点値の精度 p で決まります。変換規則については、「データ型変換」の章を参照してください。

固定小数点値は、組み込み関数を使用して明示的に指定しない限り、丸められることはありません。桁数を超過する場合、固定小数点変数に割り当てる際に下位の桁が切り捨てられます。組み込み関数の CEIL、FLOOR、TRUNC、または ROUND を使用して、あらゆる種類の丸めを実行できます。

固定小数点値は、常に小数の正確な表現として保存されます。固定小数点値 10.50 が 10.49 と表されることはありません。

固定小数点定数は、次の例に示すように 10 進数として記述されます。小数点がある場合とない場合があります。

5
4.5
4100.01

固定小数点定数に小数点がある場合、スケールを指定済みの固定小数点値と見なされ、固定 10 進変数と同じ方法で格納およびアクセスされます。小数点がない固定小数点定数は整数定数となり、他の算術値を含む演算でその値の基数にもスケールにも問題なく使用できます。可能な限り、小数点がない整数定数を記述することをお奨めします。

固定小数点定数の精度は、その定数の桁数に相当します。