数値の有効桁数を揃えて出力する方法
Article Options
- Article History
- RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Views
4,941
質問
計算結果やプロシジャからの出力値の桁数が異なる際、表示時に 同一桁数にならない場合があります。
その際、有効桁数を揃えて表示するには,どうしたらよいのでしょうか。
回答
ROUND関数で有効数字の桁を指定することにより、有効桁数を揃えることができます。
指定する有効桁数は、ABS関数、LOG10関数、およびINT関数を使用して以下のように求めることが可能です。
1. INT 関数により値が整数であるか小数であるかで処理を分ける。
2. LOG10関数により何桁の数値かを算出する
3. 2の値を用いて設定した有効桁となるように、累乗の値を調整する。
4. 3の値を用いてROUND関数により指定した有効桁での丸めを行なう。
以下の例は、前述の手順で有効桁数が3になるように桁数を揃えるプログラムです。
例:有効桁数を3桁で揃えるプログラム例
DATA one;
INPUT x;
IF int(x) ne 0 THEN DO;
/* 整数の場合 */
_3sigdigit=ROUND(x,10**(INT(LOG10(ABS(x)))-2));
END;
ELSE DO;
/* 小数の場合 */
_3sigdigit=ROUND(x,10**(-1*(ABS(INT(LOG10(ABS(x))))+3)));
END;
DATALINES;
1234
12345
0.01234
;
RUN;
PROC PRINT;
FORMAT x _3sigdigit 12.5;
RUN;
同様のサンプルプログラムが、以下のURLにも記載されています。
http://support.sas.com/kb/24/728.html