为什么comma9.2不起作用?

时间:2015-03-18 16:28:42

标签: sas

有谁可以告诉我为什么comma9.2无法使用我的sas代码?

data have;
input x $16.;
y = input(x, comma9.2);
z = input(x, comma9.);
put x= y= z= ;
cards;
1,740.32
5200
520
52
7,425
9,000.00
36,000.00
;
run;

2 个答案:

答案 0 :(得分:2)

扩展Reeza的答案:

非格式小数位不能像格式小数位那样工作。几乎在所有情况下,您都不希望或不需要在信息中指定dComma9.几乎总是正确的,无论你期望多少小数位数 - 即使你总是期望两个小数位。

只有使用信息小数位才能使用的是当你有一个像12345600的数字,它没有小数,但它应该(最后两个零在小数之后)。

data _null_;
  input numval 8.2;
  put numval=;
  datalines;
12345600
12345605
99999989
1857.145
;;;;
run;

这是在打卡时代曾经常见的事情,特别是对于会计;因为一切都是美元和美分,你可以通过省略小数来保存一列,然后用两位小数读取所有内容。它在大多数领域已不再常见(至少在我的经验中),但SAS总是向后兼容。

SAS如果遇到数据中的小数点,将忽略.d规范(然后将使用该小数的位置正确读取值),但如果数据中没有小数点如果您指定.d,它可能会错误地读取它。请注意,在我的示例中,最后一行有一个小数点后跟三个小数位,并且正确读取。

您可以阅读SAS Documentation了解详情。

答案 1 :(得分:0)

Comma9.2假设值总是有2位小数。