21 Stimmen

Stop DecimalFormat with percentage sign from moving the decimal

Gibt es eine Möglichkeit zu verhindern, dass ein DecimalFormat-Objekt das Dezimalzeichen automatisch um zwei Stellen nach rechts verschiebt?

Dieser Code:

double d = 65,87;
DecimalFormat df1 = new DecimalFormat(" #,##0.00");
DecimalFormat df2 = new DecimalFormat(" #,##0.00 %");
System.out.println(df1.format(d));
System.out.println(df2.format(d));

ergibt:

65,87
6.587,00 %

Aber ich hätte gerne, dass es folgendes ausgibt:

65,87
65,87 %

37voto

StoopidDonut Punkte 8547

Umschließen Sie Ihr % mit einfachen Anführungszeichen:

DecimalFormat df2 = new DecimalFormat(" #,##0,00 '%'");

7voto

Mike B Punkte 5308

Standardmäßig wird der Wert, der formatiert werden soll, beim Verwenden eines % in Ihrem Format-String zuerst mit 100 multipliziert. Sie können den Multiplikator auf 1 ändern, indem Sie die Methode DecimalFormat.setMultiplier() verwenden.

double d = 65.87;
DecimalFormat df2 = new DecimalFormat(" #,##0.00 %");
df2.setMultiplier(1);
System.out.println(df2.format(d));

ergibt

 65.87 %

0voto

So mache ich es:

// Ihr Double in Prozent:
double prozentsatz = 0,6587;

// wie ich die Zahl mit so vielen Dezimalstellen bekomme, wie ich brauche:
double doub = (100*10^n*prozentsatz);
System.out.println("TEST:   " + doub/10^n + "%");

Wo n die Anzahl der Dezimalstellen ist, die Sie benötigen.

Ich weiß, dass dies nicht der sauberste Weg ist, aber es funktioniert.

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X