小数点以下の桁数を指定して切り捨てを行なう方法
[OS] ALL
[リリース] ALL
[キーワード] Base, decimal, truncate
[質問]小数点以下の桁数を指定して、切り捨てを行なう方法はありますか?四捨五入はROUND関数で可能ですが、数値の切り 捨てをしたいと考えています。たとえば、「1.2345」を小数点以下第3位までで切り捨てて、「1.234」を求めるような方法です。
[回答]小数点以下の桁数を指定して切り捨てを行なう関数はサポートされていませんが、INT関数を利用して、任意の桁で切り 捨てした値を求められます。 例1:小数点以下第3位までで切り捨てる DATA a; INPUT a; b=INT(a*(10 ** 3)) / 10 ** 3; PUT b=; /* 値の確認 */ CARDS; 3.14159 -3.14159 ; RUN; 例1の結果 b=3.141 b=-3.141 例2:小数点以下第4位までで切り捨てる DATA a; INPUT a; b=INT(a*(10 ** 4)) / 10 ** 4; PUT b=; /* 値の確認 */ CARDS; 3.14159 -3.14159 ; RUN; 例2の結果 b=3.1415 b=-3.1415 なお、上記の手順をSASマクロにして使用することもできます。 /* マクロの定義 */ %MACRO d_omit(var,d); %*** 小数の桁数を指定して切り捨て ***; %*** var: 変数 ***; %*** d: 桁数 ***; INT(&var*(10 ** &d)) / 10 ** &d %MEND d_omit; DATA a; a=3.14159; b=%d_omit(a,3); /* マクロの呼び出し */ PUT b=; /* 値の確認 */ RUN; |