2016-12-26 356 views
0

我正在试图制作一个使用泰勒序列的程序来近似e。 但是,我遇到了一个问题,这让我感觉在C++上显得很不爽。变量e是一个浮点数,但每当我使用cout << e << "\n";它只输出2,而不是2.0或2.7或任何它应该在代码中的任何点输出。这里的main()代码:如何在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()计算阶乘的一些(!)。当我运行程序时,我得到了25行,说2。我究竟做错了什么?在功能之前我有#include <iostream>using namespace std;

+2

假设'fact'返回一个整数,将'1/fact(d)'改为'1.0/fact(d)'。 –

+2

如果您认为输出浮点数时遇到问题,请尝试float 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

如果您在发布此答案前两小时内发布了完全相同的推理,那么您的评论如何? –

+0

@barakmanos我会将其转换为社区wiki。 – tambre