MATLAB 中有关将值与 pi 进行比较的问题
我想在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请参阅这个堆栈溢出答案< /a> 了解详细信息。
See this Stack Overflow answer for details.
查看文件交换上的函数
round2
。它允许您四舍五入到特定的小数位数。例如你的例子: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:要比较浮点数,应该使用 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