Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas comma9.2为什么不起作用?_Sas - Fatal编程技术网

Sas comma9.2为什么不起作用?

Sas comma9.2为什么不起作用?,sas,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; Comma9.2假设值始终有两位小数。要扩展Reeza的答案: 信息小数位不像格式小数位那样有效。几乎在所有情况下,您都不希望或不需要在信息

有人能告诉我为什么
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;

Comma9.2假设值始终有两位小数。

要扩展Reeza的答案:

信息小数位不像格式小数位那样有效。几乎在所有情况下,您都不希望或不需要在信息中指定
d
Comma9.
几乎总是正确的,不管您期望小数位数是多少,即使您期望总是两位

小数位数的唯一用途是当您有一个像
12345600
这样的数字时,它没有小数点,但应该有小数点(最后两个零在小数点后)

这在穿孔卡片时代很常见,尤其是在会计方面;由于所有内容都是以美元和美分为单位的,因此您可以省去小数点来保存一列,而只需用两个小数点来读取所有内容。它在大多数领域不再常见(至少在我的经验中是这样),但SAS总是向后兼容的

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


您可以阅读更多信息。

非常感谢您,Reeza。所以,如果有混合的情况,我应该使用comma9,对吗?为了让这成为一个好问题,你应该解释什么是不正确的。虽然对我来说这是显而易见的,但对其他人来说,错误是什么可能并不明显——对你来说也不明显——而提供错误的解释将有助于其他人解决同样的问题(并有助于获得更好的答案)。
data _null_;
  input numval 8.2;
  put numval=;
  datalines;
12345600
12345605
99999989
1857.145
;;;;
run;