uscite seguente frammento 0.29847 cui avrei attesi 0,29,848 mila:Imposta la precisione in C++ round? Se è così, perché sto vedendo questo?
double f = 0.298475;
cout << setprecision(5) << f << endl;
Per altri esempi, tuttavia, osservo arrotondamento:
double f = 0.123459;
cout << setprecision(5) << f << endl;
uscite: 0,12346
e
double f = 0.123454;
cout << setprecision(5) << f << endl;
uscite: 0,12345
0.298474999999999990318855225268634967505931854248046875, per la precisione. – dan04
In altre parole, ci sono in realtà due passaggi di arrotondamento: uno quando il letterale '0.298475' viene convertito in un' double', e un altro quando si stampa un certo numero di cifre in 'cout'. – aschepler
@ dan04: Questa è una visualizzazione un po 'priva di significato; un float IEEE754 a 64 bit contiene solo circa 17 cifre decimali di informazioni utili ... –