Abrundung von Floats mit ostringstream

7

Ich habe ein Problem bezüglich der Konvertierung von Float zu C ++ String mit ostringstream. Hier ist meine Zeile:

%Vor%

Wenn t den Wert -0.89999 hat, wird auf -0.9 abgerundet, aber wenn der Wert 0.0999 oder kleiner als 1.754e-7 ist, wird nur ohne Abrundung gedruckt. Was kann die Lösung dafür sein?

    
boom 20.09.2010, 04:44
quelle

4 Antworten

14

Sie müssen die Genauigkeit für ostringstream mit precision

festlegen

z. B.

%Vor%     
yadab 20.09.2010, 04:51
quelle
6

Wenn Sie eine bestimmte Anzahl signifikanter Zahlen anzeigen möchten, verwenden Sie setprecision (n), wobei n die Anzahl der gewünschten signifikanten Zahlen ist.

%Vor%     
shuttle87 20.09.2010 04:49
quelle
2

Wenn Sie anstelle der wissenschaftlichen Notation einen Festkommawert wünschen, verwenden Sie std::fixed :

%Vor%

Zusätzlich können Sie die Präzision wie erwähnt einstellen.

    
Georg Fritzsche 20.09.2010 05:25
quelle
0

Verwenden Sie setprecision :

%Vor%

Nun wird Ihre Zeichenfolge stream.str() die erforderliche Genauigkeit haben.

    
Jacob 20.09.2010 04:57
quelle