DecimalFormat

Hobbes

Aktives Mitglied
Hallo zusammen,

ich habe ein Problem bei der Formatierung einer Dezimalzahl. Es passiert nicht das, was ich erwarte. Wo liegt mein Fehler?

Bei Eingabe einer positiven Zahl sollen 3 Stellen vor dem Komma und zwei Stellen nach dem Komma ausgegeben werden (mit Nullen aufgefüllt)

Beispiel:
Eingabe 10 => Ausgabe 010.00

Bei Eingabe einer negativen Zahl soll das Minuszeichen, zwei Stellen vor dem Komma und zwei Stellen nach dem Komma ausgegeben werden.

Beispiel:
Eingabe -10 => Ausgabe -10.00

Im Nachfolgenden Beispiel wird aber
Code:
 10: 010.00
-10: -010.00

ausgegeben. Mir ist nur nicht klar, warum das so ist.

Java:
public class MeinTest {
    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("000.00;-00.00", new DecimalFormatSymbols(Locale.US));
        System.out.println(" 10: " + df.format(10.0));
        System.out.println("-10: " + df.format(-10.0));
}

Bin gerade ratlos ???:L
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
The negative subpattern is optional; if absent, then the positive subpattern prefixed with the localized minus sign ('-' in most locales) is used as the negative subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00". If there is an explicit negative subpattern, it serves only to specify the negative prefix and suffix; the number of digits, minimal digits, and other characteristics are all the same as the positive pattern. That means that "#,##0.0#; (#)" produces precisely the same behavior as "#,##0.0#; (#,##0.0#)".
DecimalFormat (Java Platform SE 6)

mir scheint da brauchst du zwei Pattern mit if/else
 

VfL_Freak

Top Contributor
EDIT
zu spät :eek:
/EDIT

Moin,

ich habe mit dem DecimalFormat zwar nur wenig Erfahrung, vermute aber ganz stark, dass Dein Aufruf mit "xx.xx;-yy.yy" so nicht klappt.

Versuch es mal mit getrennten Formaten für pos. und negative Zahlen und prüfe Deinen Wert vorher, ob er ggf. kleiner 0 ist !

gruß
Klaus
 
Zuletzt bearbeitet:

Hobbes

Aktives Mitglied
Danke für die Antworten. Da hat man sich einmal intensiv mit der Insel beschäftigt und es war immer noch nicht ausreichend ;)

Alternativ kann man es auch mit String.format lösen

Java:
public class MeinTest {
    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("000.00;-00.00", new DecimalFormatSymbols(Locale.US));
        System.out.println(String.format(Locale.US, "%06.2f", 10.0));
        System.out.println(String.format(Locale.US, "%06.2f", -10.0));
}
 

Andi_CH

Top Contributor
Wozu kann das NegativePattern so ausführlich geschrieben werden, wenn damit nur das Vorzeichen beeinflusst werden kann? ... und ob das sinnvoll ist, dass man das kann? ;-)

Java:
DecimalFormat df = new DecimalFormat("+000.00; +", new DecimalFormatSymbols(Locale.GERMAN));

Ich glaube ich wende diese Formatierung auf mein Bankkonto an :D
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

Alternativ kann man es auch mit String.format lösen

Java:
public class MeinTest {
    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("000.00;-00.00", new DecimalFormatSymbols(Locale.US));
        System.out.println(String.format(Locale.US, "%06.2f", 10.0));
        System.out.println(String.format(Locale.US, "%06.2f", -10.0));
}

Brauchst Du das nur für die Ausgabe ???:L

Nur als Tipp: Dein DecimalFormat ist jetzt obsolet :D

Gruß
Klaus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
J java.text.DecimalFormat Java Basics - Anfänger-Themen 5
P DecimalFormat Java Basics - Anfänger-Themen 5
A DecimalFormat und wissenschatliche (Potenz-)Schreibweise Java Basics - Anfänger-Themen 6
V Tausender Trennzeichen DecimalFormat & NumberFormat Java Basics - Anfänger-Themen 8
H DecimalFormat mit BigDecimal? Java Basics - Anfänger-Themen 6
N Methoden Decimalformat variabel einstellen Java Basics - Anfänger-Themen 18
L DecimalFormat InputStringException Java Basics - Anfänger-Themen 5
C DecimalFormat-Patern funktioniert ab 11 Stellen nicht mehr Java Basics - Anfänger-Themen 3
D Datentypen Double 2 stellen hinter dem Komma ausgeben OHNE decimalformat Java Basics - Anfänger-Themen 2
L DecimalFormat - wo ansetzen? Java Basics - Anfänger-Themen 4
S DecimalFormat deutsche Trennzeichen. Java Basics - Anfänger-Themen 4
R Decimalformat mit Aufzählung von 1 bis 100 Java Basics - Anfänger-Themen 2
I kleines problemchen bei DecimalFormat Java Basics - Anfänger-Themen 6
G Problem mit DecimalFormat Java Basics - Anfänger-Themen 3
D komme heute mit dem DecimalFormat nicht klar... Java Basics - Anfänger-Themen 2
J String Formatieren DecimalFormat oder wie? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben