首页 > 解决方案 > 为什么 SAS 中的 DO WHILE 和 DO UNTIL 在应该停止循环后再执行一次循环体?

问题描述

问题 1: 对于 DO WHILE,我写下了以下代码:

data do_while;
a = 0;
do while (a<1);
    a = a+0.1;
    output;
end;
run;

SAS给了我这个: do_while的结果

我不明白为什么输出 1.1。当a = 1时循环不应该停止吗?

问题 2: 对于 DO UNTIL,我写下了以下内容:

data do_until;
b=0;
do until (b>=1);
    b=b+0.1;
    output;
end;
run;

SAS给了我这个:do_until的结果

我知道在执行循环体之前 DO WHILE 循环检查条件,而 DO UNTIL 循环执行循环体然后检查条件。

在某个时刻 b=0.9,SAS 执行 b=b+0.1(现在 b=1)并输出它。然后 SAS 检查条件 b>=1 是否为真,因此循环应该停止。但是为什么还是输出1.1呢?

标签: sas

解决方案


输出语句在错误的位置。

data do_while;
   a = 0;
   do while (a<1);
      output;
      a = a+0.1;
      end;
   run;

在此处输入图像描述


推荐阅读