int main()
{
float Num = 3254.4;
printf("%06.4f",Num);
return 0;
}
Perché non stampa 003254.3999
come le mie aspettative, ma 3254.3999
?Il sub-specificatore in printf
I've completely read this reference prima di postare.
int main()
{
float Num = 3254.4;
printf("%06.4f",Num);
return 0;
}
Perché non stampa 003254.3999
come le mie aspettative, ma 3254.3999
?Il sub-specificatore in printf
I've completely read this reference prima di postare.
Dal tuo Riferimento:
larghezza:
Numero minimo di caratteri da stampare. Se il valore da stampare è più corto di questo numero, il risultato viene riempito con spazi vuoti. Il valore non viene troncato anche se il risultato è più grande.
Si noti che questo conta tutti i caratteri incluso il. e le quattro cifre decimali
6 a sinistra + 4 a destra + 1 per decimali = (non 10)
quello che vuoi è "% 011.4f"
Testato questo:
printf("%011.4f\n", 1.4);
risultato è:
000001.4000 // note 6 to the left and 4 to the right (plus the .) = 11
Modificare il 6
-10
o superiore e si vedrà il 0
imbottitura. Lo 6
che stai specificando è il numero minimo di caratteri che stamperà. Il tuo numero (3254.3999) ha nove.
6 + 4 + 1 = 11 non 10 –
sì testato: 'printf ("% 011.4f \ n ", 1.2344);' il risultato è '000001.2344' <6>. <4> –
Prova questo:
int main()
{
float Num = 3254.4;
printf("%011.4f",Num);
return 0;
}
cioè, provare a cambiare il valore identificatore maggiore di 6 da quando si specifica limitano i caratteri minimi.
È necessario il '0' davanti a' 10': 'printf ("% 010.4f ", Num);' –
6 + 4 + 1 = 11 non 10 - 6 a sinistra + 4 a destra + 1 per il decimale –
Questo perché 6
viene utilizzato per giustificare a destra l'output su 6 posizioni. Dato che l'output diventa larghezza di 9 punti, il suo effetto non è visibile. Se aumenti la larghezza, puoi vedere l'effetto.
La larghezza di output è in realtà 9. –
@BitFiddlingCodeMonkey; Aggiustato. – haccks
OP pensa che il ''6'' si applica solo a ciò che si trova a sinistra del'' .''. Non lo vuole necessariamente riempito con due "0". –
@BitFiddlingCodeMonkey Dalla sua domanda vuole che "003254.3999" non sia riempito con 00? –
Non specifica che è ciò che vuole. Questa è solo semantica. Molto bene. –