楼主: blliufan
908 0

[原创博文] 求帮忙解释下这个问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

84%

还不是VIP/贵宾

-

威望
0
论坛币
887 个
通用积分
0.0003
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2530 点
帖子
138
精华
0
在线时间
200 小时
注册时间
2009-9-28
最后登录
2021-10-9

楼主
blliufan 发表于 2012-2-16 10:52:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
近日读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不是呢?
求解释
二维码

扫码加我 拉你入群

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

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

关键词:求帮忙 condition crackman dition Ackman

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 18:41