【问题标题】:Converting CHAR to NUM with varying decimal places将 CHAR 转换为具有不同小数位的 NUM
【发布时间】:2015-09-11 00:18:11
【问题描述】:

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

例如,

 Data
 1052969525
 392282764.234
 221018301.2
 130010764.7894
 82340150
 183779233.4

我已确定可能的最大小数位数为 4,所需的宽度约为 15。所以我尝试了以下操作:

 datanum = input(data, 15.4);

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

【问题讨论】:

    标签: sas


    【解决方案1】:

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

    datanum = input(data,15.);
    

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

    123456
    882348
    100000
    123400
    

    我可以将其读取为整数美分 - 或者我可以这样做:

    input cost 6.2;
    

    这将告诉 SAS 将小数点放在最后 2 个字符之前。

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2021-11-09
      • 2011-06-08
      • 2022-11-17
      • 2013-07-03
      • 2016-07-10
      相关资源
      最近更新 更多