jadfq - Formatierung von Doubles

Status
Nicht offen für weitere Antworten.

Joern

Mitglied
just another double formatting question

Hallo, hallo

Benutze java 1.4.2_14 und wuerde gern eine double formatiert ausgeben wie z.B

intern: 12345.678

Ausgabe als 12345.7
und nicht 12345,7
und nicht 12,345.7

auch soll eine 45678.0
als 45678.0 ausgegeben werden
und nicht als 45678

Mein Versuche mit:

Code:
Locale locale;
NumberFormat formatter;

locale = Locale.US;
formatter = new DECIMALFormat( "0.0" ); // und
r = 12345.678;
formatter.format( r ); // führt zu 12345,7 und
formatter.getNumberInstance( locale ).format( r ) // führt zu 12,345.7 und bei r 45678.0 zu 45,678

Vielen Dank für jeden Hinweis

Joern
 
Code:
DecimalFormat format = new DecimalFormat("0.0");
// Schaltet die Tausender-Punkte aus (ist eigentlich schon standardmäßig so)
format.setGroupingUsed(false);

// Object zum ändern der Grouping und Kommazeichen
DecimalFormatSymbols symbols = format.getDecimalFormatSymbols();
symbols.setDecimalSeparator('.');
 
Hallo MasterEvil

Vielen Dank für deine Antwort.
Aber es scheint keine Methode .getDecimalFormatSymbols() der Klasse DecimalFormat in java 1.4.2 zu geben, in jedem Fall löst der Compiler mir das Symbol nicht auf (?).

Joern

Jetzt habe ich es doch geschafft, dass mir der Compiler meckert (???) mit deinem Vorschlag.

Jetzt habe ich 2 Methoden mit denen ich eine Double ausgeben kann:

Code:
DecimalFormat formatter = new DecimalFormat( "0.00" );
formatter.setGroupingUsed( false );
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setDecimalSeparator( ':' );
symbols.setZeroDigit( 'o' );

double r = 4370.0;

System.out.println( "Result :" + formatter.format( r );                                    // ergibt 4370,00
System.out.println( "Result :" + formatter.getNumberInstance().format( r );    // ergibt 4.370

Sch**ße, warum gehts dass nicht so einfach wie mit C:

printf( "%.1f", r ) ??????????????

Joern

Nochmal versucht - und jetzt --

Code:
DecimalFormat formatter = new DecimalFormat( "0.00" );
formatter.setGroupingUsed( false );
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setDecimalSeparator( '.' );
formatter.setDecimalFormatSymbols( symbols );                                           // Die Zeile fehlte

double r = 4370.0;

System.out.println( "Result :" + formatter.format( r );                                    // ergibt 4370.00
System.out.println( "Result :" + formatter.getNumberInstance().format( r );    // ergibt 4.370

Also jetzt geht es: aber trotzdem die Frage geht es nicht auch einfacher???? (Wie mit C ? s.o.)

Joern
 
Klar, geht selbstverständlich auch 😉

Code:
new PrintfFormat( Locale.GERMAN, "%.1f" ).sprintf( r );
 
Wird dies "new PrintfFormat( Locale.GERMAN, "%.1f" ).sprintf( r );" denn von Java 1.4.2 unterstützt?
Mein Compiler meckert und ich kanns in der API-Descr. von Sun nicht finden?

Joern
 
Ich glaub das is nicht im SDK integriert 😉
Funktioniert denn die java da nicht? pack sie halt in dein Projekt mit rein, wer sowas spezielles will kann auch mit 2kb mehr auskommen 😛

PS. ich hab da mit noch nie gearbeitet und habs auch nicht getestet sondern eben nur gegoogled und da war das halt an erster Stelle.
 
Vielen Dank noch für deinen Hinweis. Ok - dann lebe ich erst mal mit der bisherigen Implementierung.
Einen schönen Tag noch 😀 .

Joern
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben