Come usare “%f” per popolare un doppio valore in una stringa con il diritto di precisione
-
09-06-2019 - |
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?
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.
Per un riferimento più completo, vedere il Wikipedia printf articolo, sezione "formato printf segnaposto" e un buon esempio sulla stessa pagina.
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);