Sas 将字符转换为小数位数不同的NUM

Sas 将字符转换为小数位数不同的NUM,sas,Sas,我正在尝试将存储的列从字符转换为数字。问题是此列的小数位数不同 比如说, Data 1052969525 392282764.234 221018301.2 130010764.7894 82340150 183779233.4 我已经确定小数点的最大可能是4,所需的宽度大约是15。因此,我尝试了以下几点: datanum = input(data, 15.4); 但这似乎把小数点放错了位置,特别是对于那些没有小数点的人。将此列从char转换为numeric最合理的方法是什么

我正在尝试将存储的列从字符转换为数字。问题是此列的小数位数不同

比如说,

 Data
 1052969525
 392282764.234
 221018301.2
 130010764.7894
 82340150
 183779233.4
我已经确定小数点的最大可能是4,所需的宽度大约是15。因此,我尝试了以下几点:

 datanum = input(data, 15.4);

但这似乎把小数点放错了位置,特别是对于那些没有小数点的人。将此列从char转换为numeric最合理的方法是什么?此列是其他人上载的数据库表的一部分,因此没有太多选项可以更改。谢谢。

您通常不会在信息中提供小数宽度。对于普通数字,您只提供宽度,SAS将为您计算小数点(基于小数点的位置)

informat的
.d
部分是为了与数据中没有小数的(大部分)旧系统兼容,以节省空间。例如,如果我阅读的是金额,我只有6个空格:

123456
882348
100000
123400
我可以以整数形式阅读,也可以:

input cost 6.2;
这将告诉SAS将小数点放在最后2个字符之前

input cost 6.2;