2016-11-15 7 views
-1
#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() { 
float pi =0; 
bool add = true; 
for (int i =1; i < 30000; i+=2) { 
    if (add) { 
     pi = pi + (4/i); 
     add = false; 
    } else { 
     pi = pi - (4/i); 
     add = true; 

    } 
} 
cout << setprecision(18); 
cout << pi; 
return 0; 
} 

しかし、出力はわずか3です​​!すべての時間....なぜそう?私の論理に何が間違っていますか?forループを使ってPiを計算しようとすると、3が返されます。

Leibnizシリーズがコンピュータとうまく対応していないのは間違っていますか?

+3

'(4/i)'はあなたが期待することをしません。 – NathanOliver

+1

はい、 '4.0/i'にする必要があります – Djee

答えて

4
pi = pi + (4/i); 

pi = pi + 4.0/i;としてください。整数で割った整数は浮動小数点の結果を生成しない整数除算です。

関連する問題