Come usare “%f” per popolare un doppio valore in una stringa con il diritto di precisione

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

Domanda

Sto cercando di compilare una stringa con un valore doppio utilizzo di un sprintf come questa:

sprintf(S, "%f", val);

Ma la precisione è in fase di cut off a sei cifre decimali.Ho bisogno di circa 10 cifre decimali, per la precisione.

Come può essere possibile?

È stato utile?

Soluzione

%[larghezza].[precision]

Larghezza deve includere il punto decimale.

%8.2 significa 8 caratteri;A 5 cifre prima del punto e 2 dopo.Un carattere è riservato per il punto.

5 + 1 + 2 = 8

Altri suggerimenti

Quello che vuoi è un modificatore:

sprintf(S, "%.10f", val);

l'uomo sprintf avranno molti più dettagli su di specificatori di formato.

Prendersi cura - l'uscita di sprintf variano in via C locale.Questo può o non può essere quello che vuoi.Vedere LC_NUMERIC locali docs/pagine man.

%f è per valori float.

Provare a utilizzare %lf invece.È stato progettato per il doppio (che ha usato per essere chiamato a lungo carri).

double x = 3.14159265;
printf("15.10 lf ", x);

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top