SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2935|回复: 7
打印 上一主题 下一主题

关于%eval

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-5-12 21:10:05 | 只看该作者

关于%eval

%let numer=2;
%let demon=8;
%put value=%eval(&numer/&denom*&denom);
%put value=%eval(&denom*&numer/&denom);
在log的结果为:value=0
                        value=2
哪位能解释一下,为什么是这个结果,我也知道%eval的意思,只是这里不懂。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-5-12 21:21:27 | 只看该作者

Re: 关于%eval

上面的有个错误。是下面这样的。
%let numer=2;
%let denom=8;
%put value=%eval(&numer/&denom*&denom);
%put value=%eval(&denom*&numer/&denom);
在log的结果为:value=0
value=2
哪位能解释一下,为什么是这个结果,我也知道%eval的意思,只是这里不懂。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-5-12 22:47:09 | 只看该作者

Re: 关于%eval

那你觉得应该是什么结果符合你的理解呢?为什么?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2012-5-13 16:19:17 | 只看该作者

Re: 关于%eval

刚开始的想法是:%eval函数里面又乘又除的,不都抵消了吗?我的意思是约分了。
后来我仔细一想,可能不能这样来,应得按照它的顺序来计算。
这样,0.25*8的结果只取整数部分就是0,16/8得2。是这样吧。
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2012-5-13 16:36:09 | 只看该作者

Re: 关于%eval

看来你是没仔细看SAS HELP。请参考我的博文《SAS宏表达式计算%EVAL与%SYSEVALF》,你就能晓得咋回事儿了。
<!-- m --><a class="postlink" href="http://www.mysas.net/sns/index.php?app=blog&amp;mod=Index&amp;act=show&amp;id=1879&amp;mid=1">http://www.mysas.net/sns/index.php?app= ... 1879&amp;mid=1</a><!-- m -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2012-5-13 22:58:44 | 只看该作者

Re: 关于%eval

老师,我看了您的博文。关于浮点数什么的,我还不明白具体是什么意思?至于在%syseval()当中的那四个Conversion-type我对照您给你解释,我看了,并且在机子上运行了下。正是那样,谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2012-5-16 07:02:11 | 只看该作者

Re: 关于%eval

[quote=&quot;leon_sas&quot;:3jzzcjak]老师,我看了您的博文。关于浮点数什么的,我还不明白具体是什么意思?至于在%syseval()当中的那四个Conversion-type我对照您给你解释,我看了,并且在机子上运行了下。正是那样,谢谢![/quote:3jzzcjak]

希望我没有说错,这里用的是integer division,第一个是2/8=0, 0*8=0。第二个是8*2=16,16/8=2。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2012-7-11 13:47:42 | 只看该作者

Re: 关于%eval

<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-6 09:05 , Processed in 0.069629 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表