2010-06-09 7 views

risposta

0

Ho lottato con esattamente lo stesso problema, e le due risposte qui fornire un indizio su come risolvere il problema: utilizzare un formattatore. Nessuna risposta spiega con precisione quali parametri sono necessari per formattare un valore Double ed evitare la notazione esponenziale.

Ci sono due opzioni. Questi sono descritti nella documentazione come "d" per intero decimale e "f" per numero decimale. Quello di cui ho realmente bisogno è il formato "punto fisso", e questo non è chiaramente descritto dalla documentazione, tuttavia f ti darà un punto fisso se imposti i parametri correttamente. Ti darà anche una visualizzazione intera se imposti i punti decimali a zero.

Per un valore Double 12345678 formattazione i seguenti risultati dà:

Double d = Double.parseDouble("12345678"); 
String r1 = String.format("%f",d);  // 12345678.000000 
String r2 = String.format("%10f",d);  // 12345678.000000 
String r3 = String.format("%5.2f",d);  // 12345678.00 
String r4 = String.format("%5.0f",d);  // 12345678 
String r5 = String.format("%,f",d);  // 12,345,678.000000 
String r6 = String.format("%,5.0f",d); // 12,345,678 
String r7 = String.format("%d",d);  // throws an exception! 

Su l'ultimo, anche se si desidera un display intera del numero, non è possibile utilizzare l'opzione 'd' con un Doppio.

3
BigDecimal.valueOf(double).toPlainString(); 
Problemi correlati