Zahlenformat

beta20

Top Contributor
Hallo zusammen,

ich habe eine Frage was das Angeben des Zahlenformats angeht. Wie muss ich das genau deklarieren?
Ist das so richtig oder wie geschieht das?
###.###,##
###,###.##
###'###.##

Was ich machen will:
a) Einlesen einer Datei (CSV)
b) Als Parameter soll es dateFormat geben
String dateFormat
-> Hier soll dann eben festgelegt werden wie das Format aussieht...

Danke für jede Hilfe
 

beta20

Top Contributor
Nein, mit Locales will ich nicht arbeiten....

Ich brauche hier leider nochmal etwas Hilfe:

Java:
DecimalFormat decimalFormat = new DecimalFormat("###,##");
 
paymentAmount = "35,03";
double numberPaymentAmount = Double.parseDouble(paymentAmount);
String paymentAmountDecimal = decimalFormat.format(numberPaymentAmount);
double newNumberPaymentAmount = Double.parseDouble(paymentAmountDecimal))


Nun bekomme ich aber eine Exception: java.lang.NumberFormatException: For input string: "35,03"
 

mihe7

Top Contributor
Damit ich es nicht vergesse: das Komma im Pattern ist das Gruppierungszeichen, ein Punkt im Pattern wäre das Dezimaltrennzeichen.
 

beta20

Top Contributor
stehe leider komplett auf dem Schlauch:
DecimalFormat decimalFormat = new DecimalFormat("###.###,##");
Geht das nicht?

Was ich habe:
mein String kommt folgendermaßen: 33,33
Wie konvertiere ich das nun in ein double?

Mein String kann aber auch so kommen 33.33
-> Wie konvertiere ich es dann?

Mein String kann aber auch so kommen 333,333.33
-> Wie konvertiere ich es dann?

Mein String kann aber auch so kommen 333.333,33
-> Wie konvertiere ich es dann?

Weitere Gruppentrenner wären natürlich auch möglich:
333.333.333,33
 

mihe7

Top Contributor
@beta20 im Pattern gibst Du die Stelle des Dezimaltrennzeichens mit einem "." an, die Stelle des Gruppierungszeichens mit einem ","

Das hat nichts damit zu tun, welche Zeichen im umzuwandelnden String verwendet werden. Das hängt von den DecimalFormatSymbols ab. Mit dem Konstruktor new DecimalFormat("###,###.##") werden die DecimalFormatSymbols für die Default Locale übernommen.
 

beta20

Top Contributor
Blicke es immer noch nicht...
Bekomme nun:
java.lang.IllegalArgumentException: Cannot format given Object as a Number

Java:
DecimalFormat decimalFormat = new DecimalFormat("###,###.##");
paymentAmount = "23,50";
String paymentAmountDecimal = decimalFormat.format(paymentAmount);
 

httpdigest

Top Contributor
paymentAmount ist doch schon ein String... wieso willst du den nochmal formatieren??
Die format() Methode dient dazu, eine Number in einen String zu formatieren.
 

mihe7

Top Contributor
Java:
import java.text.*;

public class Test {
    public static void main(String[] args) throws Exception {
        DecimalFormat df = new DecimalFormat("###,###.##");
        DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();

        dfs.setGroupingSeparator('.');
        dfs.setDecimalSeparator(',');
        df.setDecimalFormatSymbols(dfs);
        Number n = df.parse("1.423,50");
        System.out.println(n.doubleValue());

        dfs.setGroupingSeparator(',');
        dfs.setDecimalSeparator('.');
        df.setDecimalFormatSymbols(dfs);
        n = df.parse("1,423.50");
        System.out.println(n.doubleValue());

        dfs.setGroupingSeparator(':');
        dfs.setDecimalSeparator('§');
        df.setDecimalFormatSymbols(dfs);
        String s = df.format(n);
        System.out.println(s);
    }
}
 

Ähnliche Java Themen

Neue Themen


Oben