2016-11-15 1 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;으로 작성하십시오. 정수로 나눈 정수는 부동 소수점 결과를 생성하지 않는 정수 나누기입니다.