我需要获取18.433333333
之类的值并将其输出为18.4
。与此同时,我需要将5
之类的值输出为5
。
我该怎么做?
我的所有数字都在[0,100]范围内。因此,宽度为4似乎是合适的。每个数字字符三个,小数字一个。格式的最佳选择似乎是BESTDw.p
或w.d
。
如果我使用BESTD4.1
,则5
根据需要为5
,但18.433333333
为18
。
如果我使用4.1
,则18.433333333
根据需要为18.4
,但5
为5.00
。
这出现在PROC REPORT的背景下。
data example;
input
ID $
wd
bestdwp
;
datalines;
1 18.433333333 18.433333333
2 5 5
;
run;
proc report data = example;
column
ID
wd
bestdwp
;
define ID / 'ID';
define wd / 'w.d' format = 4.1;
define bestdwp / 'BESTDw.p' format = bestd4.1;
run;
然后输出:
BEST
ID w.d Dw.p
1 18.4 18
2 5.0 5
答案 0 :(得分:1)
使用BEST4.1
代替BESTD4.1
来自文档
写入的整数不带小数。
带小数的数字根据需要或宽度允许的小数点左侧和右侧写入尽可能多的数字。
答案 1 :(得分:0)
您可以使用自定义图片格式执行此操作。我不确定是否有更简单的方法,除了在将数字变量传递给proc report
之前将其转换为文本:
proc format;
picture mixed
%macro loop;
%do i = 0 %to 99;
&i = '99'
&i <-< %eval(&i+1) = '99.9'
%end;
%mend;
%loop;
run;
data _null_;
do i = 18.33, 18;
put i mixed.;
end;
run;
输出:
18.3
18
类似构造的非图片格式也有效:
proc format;
value mixed
%macro loop;
%do i = 0 %to 99;
&i = [2.]
&i <-< %eval(&i+1) = [4.1]
%end;
%mend;
%loop;
run;