2016-12-26 3 views
0

테일러 시퀀스를 사용하여 대략 e 인 프로그램을 만들려고합니다. 그러나 나는 C++에서 느낄 수없는 문제를 발견했습니다. 변수 e은 부동 소수점이지만, cout << e << "\n";을 사용할 때마다 코드의 어느 지점에서 출력해야하는지에 관계없이 2.0 또는 2.7이 아닌 2가 출력됩니다.C++에서 float 값을 출력하는 방법은 무엇입니까?

int main() { 
    float e = 1.0; 
    int d = 1; 
    int counter = 25; 
    while(counter>=1){ 
     counter-=1; 
     e+=(1/fact(d)); 
     d++; 
     cout << e << "\n"; 
    } 
} 

fact()가 계승을 계산하는 수의 (!) 다음은 main() 코드입니다. 프로그램을 실행하면이라고하는 25 줄을 얻습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 그리고 나는 기능 전에 #include <iostream>using namespace std;을 가지고있다.

+2

'fact'가 정수를 반환한다고 가정하면'1/fact (d)'를'1.0/fact (d)'로 변경하십시오. –

+2

플로트를 출력하는 데 문제가 있다고 생각되면'float x = 2.7; std :: cout << x << '\ n';'. – juanchopanza

+1

@barakmanos 감사합니다. 그것은 효과가 있었다. 나는'int/int'가 float을 출력해야한다고 가정하고있었습니다. 그것을'1.0 '으로 만들었습니다. –

답변

0

부서는 정수를 반환하며 실제로는 부동 소수점을 반환하지 않습니다. 부서의 측면 중 하나는 출력이 부동 소수점이어야하는 부동 소수점이어야합니다.

변경 :

e+=(1/fact(d)); 

에 :

e += (1.0/fact(d)); 

이 문제를 해결해야한다.

+0

이 답변을 게시하기 2 시간 전과 똑같은 추론을 말한 의견에 약간의 점수는 어떨까요? –

+0

@barakmanos이 항목을 커뮤니티 위키로 변환하겠습니다. – tambre

관련 문제