2016-12-26 8 views
0

私はTaylor Sequenceを使って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()コードです。私がプログラムを実行するとき、私は2と言う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

あなたの部門は整数を返し、実際には浮動小数点を返しません。部門の1つの側面は、出力をフロートにするためのフロートでなければなりません。

変更:

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

に:

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

はあなたの問題を解決する必要があります。

+0

この回答を投稿する2時間前とまったく同じ理由を述べているコメントには、いくらかのクレジットはありますか? –

+0

@barakmanosこれをコミュニティのwikiに変換します。 – tambre

関連する問題