2016-05-28 5 views
0

Visual Studio 2015では、piを計算するプログラムを作成しました。パイのための変数はfloatである(これは本当に必要だったが、私は思った場合、私は確信していなかった私かもしれないとしても念のため)、とにかく...ここでは、関数の:だから、私の知る限りVisual StudioのWindows 7 cmd(浮動小数点数を表示しない)

float pi(int accuracy) { 
    float pi = 3; 
    int nint = 2; 
    int next; 
    for (int i = 0; i < accuracy; i++) { 
     next = 4/(nint * (nint + 1) * (nint + 2)); 
     nint += 2; 
     if (i % 2 == 0) { 
      pi += next; 
     } 
     else { 
      pi -= next; 
     } 
    } 
    return pi; 
} 

変数floatが返されます。私が呼び出すときは、パラメータとして2000を使用します。これは、piのかなり正確な表現を返します。 Visual Studioではこれをcmdに表示しますが、小数点以下の桁を書くのではなく、3と表示されます。
これをPythonでテストすることにしました。コードは次のとおりです。

pi = 3 
n_int = 2 

# I'm using 1000 as the accuracy, because Python's slower. 
for i in range(1000): 
    nextint = 4/(n_int * (n_int + 1) * (n_int + 2)) 
    n_int += 2 
    if i % 2 == 0: 
     pi += nextint 
    else: 
     pi -= nextint 

print(pi) 
input() 

私はこの方法で2つの異なる出力方法があるため、Pythonでテストしました。まず、IDLEウィンドウから出力を表示するIDLEから直接実行しました。これは3.141592653340544と表示されます(これは完全には正確ではありませんが、期待されています)。しかし、WindowsのエクスプローラでPythonファイルをダブルクリックすると(cmdで開く)、C++の例のように3しか表示されません。
これから私はかなり安全にそれがcmdの問題だと言うことができますが、おそらく私はこれを実現する可能性のある設定や何かを変更しました(これは覚えていませんが)。
したがって、cmdではどのように浮動小数点数または長い数値を表示できますか?

+0

どのように表示していますか? – immibis

+0

@immibis 'cout << pi(2000);' –

+0

.py(Windowsエクスプローラが使用する)とファイルの関連付けを確認してください。私はそれがPython 2にリンクされていると思われますが、あなたのIDLEはPython 3です。 – cdarke

答えて

3

next = 4/(nint * (nint + 1) * (nint + 2));

(nint * (nint + 1) * (nint + 2))intです。 4はintです。 2つに分割すると、小数部分が削除されます(intには小数部がありません)。intは小文字部分を削除することで、intになります。

浮動小数点除算を使用するには、4.0または4.0fに変更する必要があります。

そして、nextfloatまたはdoubleにする必要があります。なぜなら、格納する必要がある番号は整数ではないからです。

+0

これはうまくいきました - ありがとう、私はそれがintを与えることに気づかなかった –

+0

できるだけ早く答えを受け入れるだろう、それはすぐに私をこれを私を許していない –

+0

また、Pythonコードでは、 C++より小数点以下桁数これはなぜですか? (これは、すべての変数をdoubleに変更した後です) - 私は両方とも同じアルゴリズムを使用しています –

0

「piの変数は長いです」 - これはおそらくあなたの問題です。 long longは整数型です。 piのような浮動小数点数を格納することはできません。 float,doubleまたはlong doubleを使用してください。

+2

質問者はそれを言っていますが、どのコードでも「long long」は表示されません。 – immibis

+0

@Jesper Juhlはい、コードでは実際には浮動小数点型ですが、私がそれを入力したときはわかりませんでした –

+0

@immibis私はそれが 'pi()'の呼び出しの結果を格納するために使用したものと仮定しました。完全なコード例を見ずに知ることは不可能です。 –

関連する問題