Runden schwimmt mit ostringstream
Ich habe eine Frage in Bezug auf die Konvertierung von float in c++ - string mit ostringstream. Hier ist meine Zeile:
void doSomething(float t)
{
ostringstream stream;
stream << t;
cout << stream.str();
}
wenn t den Wert -0.89999 es ist Runden zu -0.9, aber wenn es Wert ist 0.0999 oder kleiner als dieser sagen 1.754 e-7, es druckt nur ohne Runden. was kann die Lösung für dieses.
- Warum nicht, übergeben Sie den Schwimmer direkt an
cout
? - silico, eigentlich will ich mich verwenden, dass der Wert irgendwann in meinem code.
- silico, was Sie eigentlich sagen, nicht funktioniert.
- Das ist, warum es ist ein Kommentar, keine Antwort. 🙂 Ich wusste nicht, dass der
cout
ist für debugging-Zwecke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Genauigkeit für die ostringstream mit
precision
e.g
Wenn Sie möchten, dass eine bestimmte Anzahl von signifikanten stellen angezeigt, versuchen Sie es mit setprecision(n), wo n ist die Anzahl der signifikanten Fakten Sie wollen.
Wenn Sie möchten, fixed-point statt der wissenschaftlichen notation, die Verwendung
std::fixed
:Zusätzlich können Sie die Präzision wie erwähnt.
Verwenden setprecision:
Nun den string
stream.str()
wird von der erforderlichen Präzision.