首先来看下面两段代码:
data a;
length x8 8 x4 6;
retain x8 0.1 x4 0.1;
run;
data _null_;
set a;
put x8= x4=;
if x8=x4 then put "Equal";
else put "Unequal";
run;
输出结果为:
x8=0.1 x4=0.1
Unequal
明明两个变量都赋值为0.1,为什么结果输出“Unequal”呢?原因是两个变量的长度不同,length语句定义了x8的长度为8,而x4的长度为6,因此导致了判断为不相等的结果。解决办法是:1)一开始就将两个变量定义为相同长度;2)或者使用trunc函数,将变量截断。
data _null_;
set a;
put x8= x4=;
if trunc(x8,6)=x4 then put "Equal";
else put "Unequal";
run;
如上内容来自《Professional SAS Programming Shortcuts: Over 1,000 Ways To Improve Your SAS Programs(Third Edition)》 P47-P48
data a;
length x8 8 x4 6;
retain x8 0.1 x4 0.1;
run;
data _null_;
set a;
put x8= x4=;
if x8=x4 then put "Equal";
else put "Unequal";
run;
输出结果为:
x8=0.1 x4=0.1
Unequal
明明两个变量都赋值为0.1,为什么结果输出“Unequal”呢?原因是两个变量的长度不同,length语句定义了x8的长度为8,而x4的长度为6,因此导致了判断为不相等的结果。解决办法是:1)一开始就将两个变量定义为相同长度;2)或者使用trunc函数,将变量截断。
data _null_;
set a;
put x8= x4=;
if trunc(x8,6)=x4 then put "Equal";
else put "Unequal";
run;
如上内容来自《Professional SAS Programming Shortcuts: Over 1,000 Ways To Improve Your SAS Programs(Third Edition)》 P47-P48