楼主: edwardzxf
1042 3

一段程序 [推广有奖]

  • 0关注
  • 2粉丝

已卖:32份资源

讲师

26%

还不是VIP/贵宾

-

威望
0
论坛币
222 个
通用积分
0.4203
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
3991 点
帖子
242
精华
0
在线时间
375 小时
注册时间
2010-7-30
最后登录
2021-5-25

楼主
edwardzxf 学生认证  发表于 2011-8-4 14:47:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
下面是我的一段程序:

%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的判断力实效了,这是为什么呢?请高手指点.感激呀!
二维码

扫码加我 拉你入群

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

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

关键词:Macro Local eval 高手指点 Then 绝对值 判断力 local 程序 1100

本帖被以下文库推荐

沙发
soporaeternus 发表于 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
  1. %if %sysevalf(&x>&y) %then %do;
复制代码
貌似就正确了......
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
liuzhenzhu + 30 + 1 热心帮助其他会员
pobel + 1 + 1 + 1 我很赞同

总评分: 论坛币 + 30  学术水平 + 2  热心指数 + 1  信用等级 + 1   查看全部评分

Let them be hard, but never unjust

藤椅
edwardzxf 学生认证  发表于 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...

板凳
suzhzh 发表于 2011-8-4 21:46:47
学习了,sas的功能太强大了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 10:56