【问题标题】:put string to length 20 (input and put function) sas将字符串长度设为 20(输入和放置函数)sas
【发布时间】:2018-08-03 22:24:51
【问题描述】:

我正在尝试运行下一个代码,因为我需要将一个字符串作为长度为 20 的字符:

data input;
input str: $16.;
format str $16.;
datalines;
9224000007993931
9224000008225795
9033000008162048
9111000001835936
9999000000350632
;
run;

data transf;
set input;
n1=substr('00000000000000'||str,length('00000000000000'||str)-19,20);
n2 = put(input(str,20.), z20.);
run;

然后输出就是下一个:

为什么第一个和第二个记录的 n2 变量中的最后一个数字会改变? n1 是真实的结果。

【问题讨论】:

    标签: sas


    【解决方案1】:

    这是一个数值精度问题。 SAS 可以完全存储的最大整数因操作系统而异;我猜你已经超出了限制。在 Windows 上,精确表示的最大整数是 2**53 = 9,007,199,254,740,992。您最好将其保留为字符值。当您使用 input() 将其转换为数值时,可能会丢失精度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多