今天遇到一个需求,就是在宏里面要进行数学计算,虽然立马想到了%eval这个函数,但是在写的过程中,比如
%do i=1 %to #
num=%eval(21+&i*0.1);
%end;
发现报错了,因为平时用的比较少,所以立马打开我的有道云笔记,搜索关键字,立马找到相关知识点。
原来%eval计算不了包含浮点数的值,而如果想要计算浮点数的值,得用到%sysevalf这个函数,来看几个例子:
运行之后发现cc能够正常输出值,但是zz就输出不了
为了大家能搜索到我的文章:我把error也复制下来
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required.
用%sysevalf就能解决这个问题,同时%sysevalf这个函数也能计算整数:
除此之外,%sysevalf这个函数还能进行一些转换,比如说我们想取整、往上取值、往下取值都能实现
睡觉!
网友评论