2013-06-13 3 views
0

я не могу получить cout для отображения десятичных знаков (с использованием затмение C++ и MinGW)Невозможно получить соиЬ отображать десятичные C++

#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

Ах, проблема с целочисленной математики по сравнению с двойной математикой. Мы все сделали одно и то же в один момент! – AndyG

ответ

9

((a + b + c)/3) - у которого есть тип int. Измените его на ((a + b + c)/3.0), чтобы получить double

1

Вы вычисляете (a + b + c)/3, а затем сохраняете его в avgResult. avgResult является двойным, но a + b + c является int, 3 - int, поэтому результатом деления является int. Таким образом, вы, наконец, сохраняете int в своей двойной переменной.

Другой способ получить двойной результат, к тому же уже упоминалось одно:

avgResult = a + b + c; 
avgResult /= 3; 
Смежные вопросы