Wie% g Runden bis Gleitkommazahlen?
-
27-09-2019 - |
Frage
Während ich %g
als Formatbezeichner in printf()
bin mit, manchmal rundet es bis zu 2 Stellen nach dem Komma, manchmal bis zu 3 Plätze, someimes bis 4 Plätze ... wie es funktioniert so?
Eigentlich wo wir %g
statt %f
oder %e
für Gleitkommazahlen verwenden sollten?
Lösung
Das %g
Formatspezifizierer macht seine Runden wie %f
tun würde, aber wenn %f
in 4.234000
führen würde, dann wird %g
die nachgestellten Nullen weglassen und drucken 4.234
.
%g
verwendet werden soll, wenn es am meisten Sinn in Ihrem Ausgabeformat macht, dass einige Zahlen als 12345.6
gedruckt werden, während eine etwas größere Zahl würde als 1.235e04
gedruckt werden.
Andere Tipps
%g
automatisch ‚dreht‘ zwischen der Verwendung von %e
und %f
je nach dem Wert, in einem Versuch, Anzeige, so viele Informationen wie möglich, in der gleichen Weise wie Handheld-Rechner tun.
Auch mit %g
nachfolgenden Nullen und Komma sind nicht enthalten.
Für die %f
Umwandlung der „Präzision“ ist die Anzahl der Ziffern nach dem Komma , während für %g
es ist die Anzahl der signifikanter Ziffern.
Die Standardgenauigkeit ist 6 in beiden Fällen.
Von dem printf Handbuch :
"Das doppelte Argument wird in der Art f oder e (oder F oder E umgewandelt für G Konvertierungen). Die Genauigkeit gibt die Anzahl der signifikanten Stellen. Wenn die Genauigkeit fehlt, werden 6 Ziffern angegeben; wenn die Genauigkeit Null ist, wird er behandelt, als 1. Style e verwendet wird, wenn der Exponent von seiner Umwandlung kleiner als -4 oder größer als die oder gleich der Präzision. Nachgestellte Nullen entfernt sind aus der Bruchteil des Ergebnisses; nur ein Komma erscheint wenn sie durch mindestens eine Ziffer folgt. "
Damit meine ich nicht zu „RTFM“, aber Sie werden wahrscheinlich finden, was Sie auf die Kontrolle der Präzision und Länge in den manuellen Abschnitten suchen.