C ++ float vs. double cout setprecision Kuriositäten (Neuling)

8

Kann jemand erklären, warum diese zwei Variablen mit dem gleichen Wert unterschiedliche Werte ausgeben können, wenn ich setprecision () verwende?

%Vor%

Die Ausgabe für a ist 98,76, während die Ausgabe für b 98,77 ist.

    
Hans Tananda 04.08.2017, 04:08
quelle

1 Antwort

9

Diese Variablen haben nicht denselben Wert. Wenn Sie das Literal double von 98.765 in den Float schuhen, muss es am besten passen, und etwas Genauigkeit geht verloren.

Sie können das sehr leicht sehen, wenn Sie die Genauigkeit auf 50 ändern, Sie werden auch sehen, dass nicht einmal der doppelte genau diesen Wert darstellen kann:

%Vor%

Wichtig ist jedoch, dass die vorherige Variable float abgerundet wird und die letzte double aufrundet.

Siehe auch den IEEE754 Online-Konverter .

    
paxdiablo 04.08.2017, 04:13
quelle