将字符串的长度设置为20(输入和放置函数)sas

时间:2018-08-03 22:24:52

标签: sas

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

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;

然后输出是下一个:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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