MATLAB 中有关将值与 pi 进行比较的问题

发布于 2024-11-09 14:54:51 字数 334 浏览 0 评论 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。

有人可以帮忙吗?

I want to find pi in MATLAB and when I do compare it with the pi that is already embodied in MATLAB.
So when I write

while(p~=pi)             

the loop seems endless because it keeps testing for all the digits that the MATLAB pi has.

So when I wrote:

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

the answer naturally was no. So I want to find a way to keep only five digits after the point and test with that, test for pi=3.14159.

Can anyone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

隱形的亼 2024-11-16 14:54:51
if abs(p-pi) <= 1e-5
  disp yes;
else
  disp no;
end

请参阅这个堆栈溢出答案< /a> 了解详细信息。

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

See this Stack Overflow answer for details.

暮年慕年 2024-11-16 14:54:51

查看文件交换上的函数round2。它允许您四舍五入到特定的小数位数。例如你的例子:

if round2(p,1e-5) == round2(pi,1e-5),
    disp('yes');
end

Look at the function round2 on the File Exchange. It lets you round to a specific number of decimal places. E.g. for your example:

if round2(p,1e-5) == round2(pi,1e-5),
    disp('yes');
end
流云如水 2024-11-16 14:54:51

要比较浮点数,应该使用 eps。 的话,就是这样的

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

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

while abs(p-pi)>2*eps
……
结束

——纳赛尔

To compare floating point numbers one should use eps. something along the lines

if abs(p-pi)<=eps
.... same

I've also seen 2*eps used in place of eps. But the above is the better way to compare floating points numbers. In your case, it becomes

while abs(p-pi)>2*eps
.....
end

--Nasser

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文