2010-10-04 16 views
20

%s è una stringa nel printf e% d è un numero decimale ho pensato ... eppure quando la messa inJava: Doppio domanda formattazione% per printf

writer.printf("%d dollars is the balance of %s\r\n", bal, nm); 

eccezione ..un mi sta dicendo che gettato %d ! = lang.double. Idee?

+1

Che cos'è il tipo "bal"? – Amirshk

risposta

44

%d è per gli interi utilizzano %f invece, funziona per entrambi i tipi float e double:

double d = 1.2; 
float f = 1.2f; 
System.out.printf("%f %f",d,f); // prints 1.200000 1.200000 
+0

BTW, stampa solo 6 scale dopo il punto decimale, potrebbe stampare più come questo: '% .8f' (stampa 8 scala). –

21

Sì, %d significa decimale, ma significa decimale sistema numerico, non punto decimale.

Inoltre, come complemento del post precedente, è anche possibile controllare il numero di punti decimali da mostrare. Prova questo,

System.out.printf("%.2f %.1f",d,f); // prints 1.20 1.2 

Per maggiori consultare la API docs.