s=0; while (s<1) p=0.1; s=s+p; if s>1 s=1; end s end 请问这个程序为什么最后输出有两个1呢?
s=0;
while (s<1)
p=0.1;
s=s+p;
if s>1
s=1;
end
s
end
结果
s =
0.1000
s =
0.2000
s =
0.3000
s =
0.4000
s =
0.5000
s =
0.6000
s =
0.7000
s =
0.8000
s =
0.9000
s =
1.0000
s =
1
原因: 由于数值误差的存在,小数 1.0000 < 1 是可能成立的,因此while循环可能多执行一次。