Nu pot obține cout pentru a afișa zecimale c++ [duplicat] (Programare, C++)

user1677657 a intrebat.

Nu pot obține cout pentru a afișa zecimale (folosind eclipse c++ și 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;
}

ieșirea mea este 61 când m-aș aștepta să fie 61.666666.

Pot să reușesc să afișez zecimalele folosind

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

dar am crezut că nu este nevoie să fac asta decât dacă vreau o precizie specifică a zecimalei.

Dacă fac ceva de genul

double value = 12.345;
cout << value;

se afișează corect, așa că mă face să cred că problema de mai sus are legătură cu utilizarea lui int în calculul meu al valorilor double avgResult

btw sunt nou în c++ și abia încep să învăț

Comentarii

  • Ah, o problemă cu matematica întregi versus matematica dublă. Cu toții am făcut exact același lucru la un moment dat! –  > Por AndyG.
2 răspunsuri
Andrew

((a + b + c) / 3) – care are un int tip. Schimbați-l în ((a + b + c) / 3.0) pentru a obține double

Sorin

Calculați (a + b + c) / 3 și apoi îl stocați în avgResult.avgResult este un double, dar a + b + c este int, 3 este int, deci rezultatul împărțirii este int. Deci, în final, stocați un int în variabila double.

O altă modalitate de a obține un rezultat dublu, în afară de cea deja menționată:

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

Tags: