2010-06-09 10 views

Antwort

0

ich mit genau dem gleichen Problem, und die beiden Antworten hier bieten zu kämpfen habe eine Ahnung, wie das Problem zu lösen: einen Formatierer verwenden. Keine Antwort erklärt genau, welche Parameter benötigt werden, um einen Double-Wert zu formatieren und Exponentialschreibweise zu vermeiden.

Es gibt zwei Möglichkeiten. Diese werden in der Dokumentation als "d" für Dezimalzahl und "f" für Dezimalzahl beschrieben. Was ich tatsächlich brauche, ist das "Fixed Point" -Format, und das ist nicht klar in der Dokumentation beschrieben, aber f wird Ihnen einen festen Punkt geben, wenn Sie die Parameter richtig einstellen. Sie erhalten auch eine Ganzzahlanzeige, wenn Sie Dezimalpunkte auf Null setzen.

Für einen Double-Wert 12345678 Formatierung Ihnen die folgenden Ergebnisse erhalten:

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! 

Auf dem letzten, obwohl Sie wollen eine ganze Anzeige der Zahl, können Sie nicht verwenden, um die ‚d‘ Option mit einem Doppelt.

3
BigDecimal.valueOf(double).toPlainString(); 
Verwandte Themen