2017-06-13 5 views
4

Bis vor kurzem funktionierte mein Code auf meinem Entwicklungscomputer und auf dem Deployment Server einwandfrei.DecimalFormat funktioniert nicht richtig nach Windows Update

jetzt aus heiterem Himmel, die DecimalFormat nicht wie erwartet arbeiten, und ich bin mir ziemlich sicher, dass nach den Fenster 10 Creators aktualisieren ist.

Mein Code ist:

double x = 22.44; 
DecimalFormat df = new DecimalFormat("0.00"); 
System.out.println(df.format(x)); 

Ausgang: 22,44 Statt 22,44

Wenn ich es ändern:

double x = 22.44; 
DecimalFormat df = new DecimalFormat("0,00"); 
System.out.println(df.format(x)); 

Ausgang ist: 0,22

I verwende netbeans 7.4 mit jdk 1.7.0_79u (64 bit) Versuchte Änderung m y jdk zu 1.7.0_80u (32 Bit) aber machte keinen Unterschied. Die Gebietsschemaeinstellung für Dezimalzeichen und Zifferngruppierungssymbol wurde ebenfalls geändert, das Problem ist jedoch immer noch vorhanden.

Jeder mit Ideen zur Lösung dieses Problems?

+0

ich werde überprüfen, was ich ... nur einen Moment – ItamarG3

+0

gut, vielleicht ist es ein Java 7 Problem. Java 9 (früher Zugriff) gibt keine Probleme ... Ich werde versuchen, mit Java 7 bald zu überprüfen – ItamarG3

+1

Was ist die Ausgabe von 'System.out.println (Locale.getDefault (Locale.Category.FORMAT));'? – assylias

Antwort

4

Dies ist wahrscheinlich ein locale Problem - Ihren aktuellen Code das Standardgebietsschema des Systems verwendet, die unterschiedlich in Java 7 und Java getan werden kann 8. Wenn Sie ein bestimmtes Gebietsschema verwenden möchten, können Sie verwenden:

double x = 22.44; 
DecimalFormat df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.FRANCE)); 
System.out.println(df.format(x)); 

df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.UK)); 
System.out.println(df.format(x)); 

die Ausgänge:

22,44 (mit einem Komma)
22.44 (mit einem Punkt)

4

Dies ist Ihre Systemsprache, verschiedene Länder verwenden verschiedene Zeichen für die Dezimaltrennzeichen und Tausendertrennzeichen.

Sie können das Gebietsschema im Dezimalformat festlegen, um den Systemstandard zu überschreiben. Oder Sie können Ihren Systemstandard ändern.

Verwandte Themen