我正在尝试将文本变量转换为数字,然后返回文本以将其舍入并保留尾随和前导零,因此,如果我的数字是0.501,我想在SAS中显示0.50。
我想出了这段代码,当文本字符串超过3位数字+时有效,但仅1位数字则无效
test = strip(put(round(input('5',f12.2),0.01),f12.2));
test_2 = input('5',f12.2)
在上面的示例中,有人可以解释为什么我以0.05而不是5.00结束吗?
答案 0 :(得分:3)
您的主要问题是使用F12.2作为INFORMAT。 2表示如果该值没有明确的小数,则将该值除以1E2。
42 data _null_;
43 length have $12;
44 do have = '5','5.001','500.01';
45 new = put(round(input(have,f12.),.01),F12.2-l);
46 put '*' new $12. '*' +3 have=;
47 end;
48 run;
*5.00 * have=5
*5.00 * have=5.001
*500.01 * have=500.01