问题描述
||
我想在MATLAB中找到pi,然后将其与MATLAB中已经包含的pi进行比较。
所以当我写
while(p~=pi)
循环似乎是无止境的,因为它一直在测试MATLAB pi具有的所有数字。
所以当我写:
p=3.1416;
if p==pi
disp(\'yes\');
else
disp(\'no\');
end
答案自然是没有。因此,我想找到一种方法,在该点之后仅保留五位数字并进行测试,测试pi = 3.14159。
有人可以帮忙吗?
解决方法
if abs(p-pi) <= 1e-5
disp yes;
else
disp no;
end
有关详细信息,请参见此堆栈溢出答案。
,查看文件交换上的功能ѭ3。它使您可以舍入到小数位数。例如。例如:
if round2(p,1e-5) == round2(pi,1e-5),disp(\'yes\');
end
,要比较浮点数,应使用eps。沿线的东西
如果abs(p-pi)<= eps
....一样
我还看到2 * eps代替了eps。但是以上是比较浮点数的更好方法。在你的情况下,它变成
而abs(p-pi)> 2 * eps
.....
结束
-纳赛尔