Wie „% f“ verwenden, um einen doppelten Wert in einen String mit der richtigen Präzision zu füllen
-
09-06-2019 - |
Frage
Ich versuche, eine Zeichenfolge mit einem doppelten Wert zu füllen eine sprintf
wie folgt aus:
sprintf(S, "%f", val);
Aber die Genauigkeit wird mit sechs Dezimalstellen abgeschnitten. Ich brauche etwa 10 Dezimalstellen für die Präzision.
Wie kann das erreicht werden?
Lösung
% [Breite]. [Präzision]
Breite sollte den Dezimalpunkt enthalten.
% 8.2 bedeutet 8 Zeichen breit; 5 Ziffern vor dem Punkt und 2 nach. Ein Zeichen ist für den Punkt reserviert.
5 + 1 + 2 = 8
Andere Tipps
Was Sie wollen, ist ein Modifikator:
sprintf(S, "%.10f", val);
Mann sprintf wird noch viele weitere Details zu den Formatbezeich haben.
Für eine vollständige Referenz finden Sie in der Wikipedia printf Artikel, Abschnitt „printf Format Platzhalter“ und ein gutes Beispiel auf der gleichen Seite .
Achten Sie darauf, - die Ausgabe von sprintf wird über locale C variieren. Dies kann oder kann nicht sein, was Sie wollen. Siehe LC_NUMERIC in den locale docs / man-Seiten.
%f
ist für Float-Werte.
Versuchen %lf
stattdessen verwenden. Es ist für die Doppel (die langen Schwimmer genannt wurden).
double x = 3.14159265 ;
printf ( "15.10lf \ n", x);