0

我想在 MATLAB 中找到 pi,然后将它与 MATLAB 中已经包含的 pi 进行比较。所以当我写

while(p~=pi)             

循环似乎无穷无尽,因为它不断测试 MATLAB pi 拥有的所有数字。

所以当我写:

p=3.1416;
if p==pi
  disp('yes');
else
  disp('no');
end

答案自然是否定的。所以我想找到一种方法在该点之后只保留五位数字并用它进行测试,测试 pi=3.14159。

任何人都可以帮忙吗?

4

3 回答 3

6
if abs(p-pi) <= 1e-5
  disp yes;
else
  disp no;
end

有关详细信息,请参阅此 Stack Overflow 答案

于 2011-05-26T16:08:29.350 回答
0

要比较浮点数,应该使用 eps。大体上的东西

如果 abs(p-pi)<=eps .... 相同

我还看到用 2*eps 代替 eps。但以上是比较浮点数的更好方法。在你的情况下,它变成

而 abs(p-pi)>2*eps ..... 结束

——纳赛尔

于 2011-05-26T22:05:19.767 回答
0

查看File Exchangeround2上的功能。它允许您四舍五入到特定的小数位数。例如,对于您的示例:

if round2(p,1e-5) == round2(pi,1e-5),
    disp('yes');
end
于 2011-05-26T16:00:29.523 回答