Wie „% f“ verwenden, um einen doppelten Wert in einen String mit der richtigen Präzision zu füllen

StackOverflow https://stackoverflow.com/questions/69743

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?

War es hilfreich?

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.

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);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top