SAS将文本转换为数字F12.2格式错误

时间:2018-10-17 13:53:43

标签: string sas numbers format

我正在尝试将文本变量转换为数字,然后返回文本以将其舍入并保留尾随和前导零,因此,如果我的数字是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结束吗?

1 个答案:

答案 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