全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
879 0
2012-02-16
近日读crackman大大的帖子。看到这个
%macro aa;
%let condition=( 1.2>=1 and 1.2<1.5 ) and ( 1123>=800 and 1123<1200 );
%if &condition %then %do;
    %put x;
   %end;
  %else %do;
%put M;
   %end;
   %mend aa;
%aa;
这个结果是X

%macro aa;
%let condition=( 1.2>=1 and 1.2<1.5 ) and ( 1123.1>=800 and 1123.1<1200 );
%if &condition %then %do;
    %put x;
   %end;
  %else %do;
%put M;
   %end;
   %mend aa;
%aa;
结果是M

解释是这样的:

%macro aa;
   %put ERROR-%nrstr(%eval(1999999999.9 > 9) –>) %eval(199999999.1>9);
   %put ERROR-%nrstr(%sysevalf(1999999999.9 > 9) –>) %sysevalf(199999999.1>9);
%mend aa;
%aa宏编译器在解析这个语句的时候,是要区别数据类型,也是类型不同的数据比较,返回为FALSE,也就是0。


这个我大致理解。但是如果我%let condition=( 1.2>=1 and 1.2<1.5 ) and ( 1123.1>=800.1 and 1123.1<1200.1 ),为何结果仍是M呢。为什么1.2>=1是同一个数据类型呢而1123.1>=800.1不是呢?
求解释
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群