数值相同的变量为何判断为不相等?

首先来看下面两段代码:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值