前のページ|次のページ

MODZ関数

第1引数を第2引数で除算したときの余りを、ゼロファジーを使用して返します。

カテゴリ: 数学

構文

必須引数

argument-1

除数を指定する数値定数、変数または式です。

argument-2

除数を指定するゼロ以外の数値定数、変数または式です。

詳細

MODZ関数は、argument-1argument-2で除算したときの余りを返します。結果がゼロ以外のとき、結果は第1引数と同じ符号になります。第2引数の符号は無視されます。
次の条件の両方を満たす場合、MODZ関数で実行される計算は厳密になります。
  • 両方の引数が厳密な整数である。
  • すべての整数が、厳密に8バイトの浮動小数点で表されるいずれかの引数より小さい。
    正確な計算で最大整数を判定するには、次のDATAステップを実行します。
    data _null_;
       exactint=constant('exactint'); 
       put exactint=;
    run;
    動作環境の情報: 最大整数の詳細については、現在の動作環境向けのSASドキュメントを参照してください。
前述の条件のいずれかを満たしていない場合、浮動小数点計算で小さな数値誤差が発生する可能性があります。たとえば、厳密算術を使用して結果がゼロのとき、MODZは正の極小値または第2引数より若干小さい値を返す場合があります。

比較

MODZ関数とMOD関数の比較を次に示します。
  • MODZ関数はファジーを実行しない。
  • MOD関数は、ファジーと呼ばれる追加の計算を実行し、厳密なゼロを返す(ファジーを実行しなければ数値誤差のため結果はゼロにならない)。
  • 約3桁以上の精度で余りを計算できなければ、MODZ関数とMOD関数はどちらも欠損値を返す。

次のSASステートメントは、MODとMODZのこれらの結果を生成します。
SASステートメント
結果
x1=mod(10, 3);
put x1 9.4;
1.0000
xa=modz(10, 3);
put xa 9.4;
1.0000
x2=mod(.3, -.1);
put x2 9.4;
0.0000
xb=modz(.3, -.1);
put xb 9.4;
0.1000
x3=mod(1.7, .1);
put x3 9.4;
0.0000
xc=modz(1.7, .1);
put xc 9.4;
0.0000
x4=mod(.9, .3);
put x4 24.20;
0.00000000000000000000
xd=modz(.9, .3);
put xd 24.20;
0.00000000000000005551

関連項目:

前のページ|次のページ|ページの先頭へ