2016-04-27 5 views
1

Ich habe einen Code.So drucken Sie einen doppelten Wert in DecimalFormat

Double value = 6.589715E7; 
DecimalFormatSymbols symbol = new DecimalFormatSymbols(Locale.GERMANY); 
symbol.setGroupingSeparator(','); 
final DecimalFormat doris = new DecimalFormat("#,###000",symbol); 
System.out.println(changedValue); 

die den Wert wie dieser Ritus jetzt anzeigt.

65,897150

gibt es einen Ausweg kann dies als angezeigt werden.

65,9 (auch auf eine Dezimalstelle Abrunden)

+0

Warum legen Sie ein deutsches Gebietsschema fest, das Komma als Dezimaltrennzeichen verwendet, und dann das Gruppierungstrennzeichen ebenfalls auf Komma setzen? Kombiniert mit dem seltsamen Muster, das nur den Gruppentrenner für Millionen hat, aber nicht für Tausende, wird das wirklich verwirrend. Wenn Sie auf Millionen runden wollen, sollten Sie wahrscheinlich nur eine Million teilen. – Thilo

Antwort

0

Dieses Beispiel rundet 2, aber Sie erhalten den Punkt, versuchen Sie diese Inputvalue = Math.Round (Inputvalue, 2);

+0

Das wird nicht viel für 65.897.150 tun, da diese Zahl keinen Bruchteil hat. – Thilo

0

Hier gebe ich die Antwort im String-Format. Sie können auch in das Doppelformat konvertieren.

Double value = 6.589715E7; 
    DecimalFormatSymbols symbol = new DecimalFormatSymbols(Locale.GERMANY); 
    symbol.setGroupingSeparator(','); 
    final DecimalFormat doris = new DecimalFormat("##,###000",symbol); 
    String str = String.valueOf(doris.format(value)); 
    String formated=str.replace(".", ",").substring(0,str.indexOf(",")+2); 
    Log.e("Log","d result="+formated); 
+0

Warum rufen Sie 'String.valueOf' in einem anderen String auf? – Thilo

+0

Und diese Runden auf "65,8" nicht "65,9" wie gewünscht. – Thilo

Verwandte Themen