1

我无法cout显示小数(使用 eclipse c++ 和 mingw)

#include <iostream>
using namespace std;

int main() {

    int a = 55, b = 60, c = 70;

    double avgResult;

    avgResult = ((a + b + c) / 3);

    cout << avgResult;  //should display 61.666666

    return 0;
}

我的输出是 61,而我期望它是 61.666666。

我可以让它显示小数使用

cout << std::fixed << std::setprecision(2) << avrResult;

但我认为我不需要这样做,除非我想要一个特定的小数精度。

如果我做类似的事情

double value = 12.345;
cout << value;

它显示正确,所以它让我相信上述问题与int我在计算中使用的值有关double avgResult

顺便说一句,我是 C++ 新手,刚刚开始学习

4

2 回答 2

12

((a + b + c) / 3)- 有一个int类型。将其更改((a + b + c) / 3.0)double

于 2013-06-13T15:52:10.560 回答
1

您计算 (a + b + c) / 3,然后将其存储在 avgResult 中。avgResult是一个double,但是a + b + c是int,3是int,所以除法的结果是int。所以你最终将一个 int 存储在你的 double 变量中。

除了已经提到的方法之外,另一种获得双重结果的方法:

avgResult = a + b + c;
avgResult /= 3;
于 2013-06-13T16:06:41.623 回答