0

MATLAB で pi を見つけたいのですが、それを MATLAB に既に実装されている pi と比較します。だから私が書くとき

while(p~=pi)             

MATLAB pi が持つすべての桁をテストし続けるため、ループは無限に見えます。

だから私が書いたとき:

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

当然、答えはノーでした。したがって、ポイントの後に 5 桁だけを保持する方法を見つけて、それをテストして、pi=3.14159 をテストしたいと考えています。

誰でも助けることができますか?

4

3 に答える 3

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

詳細については、このスタック オーバーフローの回答を参照してください。

于 2011-05-26T16:08:29.350 に答える
0

FileExchangeの関数round2を見てください。特定の小数点以下の桁数に丸めることができます。例:あなたの例:

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

浮動小数点数を比較するには、eps を使用する必要があります。線に沿った何か

if abs(p-pi)<=eps .... 同じ

また、eps の代わりに 2*eps が使用されていることも確認しました。しかし、上記は浮動小数点数を比較するためのより良い方法です。あなたの場合、それは

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

――ナセル

于 2011-05-26T22:05:19.767 に答える