全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1007 3
2011-08-04
下面是我的一段程序:

%macro F(x);  /*定义一个计算函数F*/
    %local y;
    %let y=%sysevalf(100/(1+&x)**1 + 100/(1+&x)**2 + 100/(1+&x)**3 + 1100/(1+&x)**4);
    &y
%mend F;

%macro absD(x,y);  /*计算x,y差的绝对值*/
      %if &x > &y %then %do;
              %let D=%sysevalf(&x-&y);
              &D
      %end;
      %else %do;
              %let D=%sysevalf(&y-&x);
              &D
      %end;
%mend;

%put %absD(1000,%F(0.1));

可我发现结果奇怪了,他输出的结果是负的, 可我明明用%absD处理了,要求只输出正值的,好像if的判断力实效了,这是为什么呢?请高手指点.感激呀!
二维码

扫码加我 拉你入群

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

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

全部回复
2011-8-4 15:19:30
All parts of the macro language that evaluate expressions (for example, %IF and %DO statements) call %EVAL to evaluate the condition.
So 999.999999999998>1000
复制代码
貌似就正确了......
二维码

扫码加我 拉你入群

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

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

2011-8-4 16:38:38
soporaeternus 发表于 2011-8-4 15:19
All parts of the macro language that evaluate expressions (for example, %IF and %DO statements) call ...
Thanks, you are so nice...
二维码

扫码加我 拉你入群

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

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

2011-8-4 21:46:47
学习了,sas的功能太强大了。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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