我正在尝试将存储的列从字符转换为数字。问题是此列的小数位数不同。
例如,
Data
1052969525
392282764.234
221018301.2
130010764.7894
82340150
183779233.4
我已经确定小数位数的最大值可能是 4,所需的宽度大约是 15。所以我尝试了以下操作:
datanum = input(data, 15.4);
但这似乎将小数点放在了错误的位置,特别是对于那些没有小数点的。将此列从 char 转换为 numeric 的最合理方法是什么?此列是其他人上传的数据库表的一部分,因此没有太多选项可以更改它。谢谢。
最佳答案
您通常不会在信息格式中提供小数位宽度。对于普通数字,您只需提供宽度,SAS 会为您计算出小数点(基于小数点的位置)。
datanum = input(data,15.);
信息格式的 .d
部分是为了与(大多数)数据中没有小数的旧系统兼容,以节省空间。例如,如果我正在读取金额,而我只有 6 个空格:
123456
882348
100000
123400
我可以将其读作整数美分 - 或者我可以这样做:
input cost 6.2;
这将告诉 SAS 将小数点放在最后 2 个字符之前。
关于sas - 将 CHAR 转换为具有不同小数位的 NUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506826/