2010-07-09 11 views
9

So come eseguire X quantità di zeri iniziali e so come eseguire X quantità di punti decimali. Ma come li faccio entrambi?printf come fare punti flottanti con zero iniziali

Sto cercando di avere 4 zeri iniziali con una precisione decimale di 2: 0000.00. Pertanto 43.4 sarebbe 0043,40

+1

Si prega di non contrassegnare una 'printf'-domanda' 'C++. –

+3

@ Space_C0wb0y: Non c'è niente di sbagliato nell'usare printf in C++. In un mondo ideale tutti userebbero iostream nel loro C++, ma non viviamo in un mondo ideale. Inoltre, a volte è più semplice ottenere una stringa formattata nel modo desiderato con printf. – George

+0

A mio parere c'è davvero molto sbagliato nell'usare 'printf' in C++. C e C++ sono due linguaggi completamente diversi, e le persone fanno supposizioni diverse su quali caratteristiche C sono OK in C++ e quali no. Le diverse ipotesi portano sempre a problemi. –

risposta

17

Prova questa stringa di formato printf (C, Perl, PHP):

"%07.2f" 
+0

java ha anche un printf ... (System.out.printf()) – st0le

+0

@ st0le: Così fa Python (tramite l'operatore '%') ma non ho fornito l'elenco delle lingue. Sentiti libero di modificare ulteriormente la risposta. –

+1

Sarebbe opportuno menzionare che il primo numero (7) indica la lunghezza totale che include la parte intera, la parte frazionaria e il punto FP stesso (e anche il segno "meno" facoltativo). – Konstantin

-1

Java: utilizzare la classe Formatter. Esempi di utilizzo atteso:

StringBuilder sb = new StringBuilder(); 
// Send all output to the Appendable object sb 
Formatter formatter = new Formatter(sb, Locale.US); 

// Explicit argument indices may be used to re-order output. 
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d") 
// -> " d c b a" 

// Optional locale as the first argument can be used to get 
// locale-specific formatting of numbers. The precision and width can be 
// given to round and align the value. 
formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E); 
// -> "e = +2,7183" 

// The '(' numeric flag may be used to format negative numbers with 
// parentheses rather than a minus sign. Group separators are 
// automatically inserted. 
formatter.format("Amount gained or lost since last statement: $ %(,.2f", 
       balanceDelta); 
// -> "Amount gained or lost since last statement: $ (6,217.58)" 
8

Ecco il codice necessario:

float myNumber = 43.4; 
DecimalFormat formatter = new DecimalFormat("0000.00"); //use # for optional digits instead of 0 
System.out.println(formatter.format(myNumber)); 
+1

A proposito, stavo codificando in altri linguaggi di programmazione al giorno d'oggi. In questo modo ho dimenticato di scrivere il nome della variabile my_number nella famosa convenzione di programmazione Java: CamelCase. Dovrebbe essere myNumber in base alla convenzione. ;) –

+2

Invece di commentare per spiegare "my_number" rispetto a myNumber, si prega di modificare la risposta. – GreenMatt

+1

Non penso che abbia abbastanza rappresentanti per modificare ancora le sue risposte. Ma faccio. –

Problemi correlati