例えば、0.123という値を小数点第2位で切り捨てて0.12に変換したい場合等です。
小数点以下を単純に切り捨てるのであればINT関数等で処理できます。
また、指定の桁数で四捨五入するのであればROUND関数で処理できます。
SASでは、小数点以下を指定の桁数で切り捨てるような関数はありません。
そこで、下記のように工夫します。
* データ作成 ;
data temp ;
x = 0.123 ;
y = 0.127 ;
z = 0.1 ;
run ;
* 切り捨て処理 ;
data temp2 ;
set temp ;
x2 = int(x * 100) / 100 ;
y2 = int(y * 100) / 100 ;
z2 = int(z * 100) / 100 ;
put x2 = y2 = z2 = ;
run ;
お分かりでしょうか?
まず、値を100で乗算したものをINT関数で小数点以下を切り捨てます。
それを元の桁に戻すために100で除算します。
小数点第3位で切り捨てる場合は、1000で乗算し1000で除算します。
他の言語でも使われる定石的な方法です。
0 件のコメント:
コメントを投稿