有谁可以告诉我为什么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;
答案 0 :(得分:2)
扩展Reeza的答案:
非格式小数位不能像格式小数位那样工作。几乎在所有情况下,您都不希望或不需要在信息中指定d
。 Comma9.
几乎总是正确的,无论你期望多少小数位数 - 即使你总是期望两个小数位。
只有使用信息小数位才能使用的是当你有一个像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位小数。