Konvertieren von scientific notation auf dezimal in C++
Ich möchte in der Lage sein, um die Ausgabe in dezimal-und nicht wissenschaftliche für alle Fälle in meinem code.
Wenn ich 122041e+08 dann möchte ich es anzeigen als 122041000
Wenn ich 4.6342571 e+06 dann möchte ich es anzeigen als 4634257.1
... und so weiter.
Mit meinem code, der die Ausgabe für 4.6342571 e+06 4634257.100000
void conversion(double counts)
{
std::ostringstream ss;
ss << std::fixed << counts;
std::cout << ss.str() << " MeV";
}
Kann mir jemand erklären, warum es fügt 0 s am Ende und, wenn es möglich ist, Sie zu entfernen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine Methode, in Ihren Ausgabe-string-stream genannt Präzision. Sie können es verwenden, um die Anzahl der Ziffern nach dem Komma. Es wird standardmäßig auf 6 und fehlenden Ziffern sind gefüllt mit 0s (daher der name "fest"). Um das zu erreichen
4634257.1
angezeigt wird, setzen Sie Genauigkeit um 1:Können Sie
std::setprecision
.Er fügt hinzu, die Nullen da hast du (unwissentlich) fragte nach Ihnen. Die Standard-Genauigkeit ist 6, und im festen format, das bedeutet, dass 6 Ziffern nach dem Dezimaltrennzeichen (unabhängig davon, wie viele vor). Die Präzision hat eine andere Bedeutung, je nach format wird für die Ausgabe verwendet. (Das klingt nicht sehr orthogonal, aber funktioniert in der Praxis gut, wenn Sie wissen, was zu erwarten.)