• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Format Problem mit Wert - bekomme 0,10 anstatt 10,00

I

internet

Top Contributor
Hallo,

ich habe ein Problem mit Java 8. Ich hatte davor eine Methode, die mir eine Zahl entsprechend formatiert. In Java7 hatte das m.W. auch funktioniert.
ich habe dazu eine Klasse, in der ich einstelle wieviel Dezimalstellen meine Zahl haben soll etc. (Klasse: FormatSetting).

Mein Problem ist nun aber, dass ich im Parameter mit 10 reingehe, ich aber nicht 10,00 bekomme, sondern 0,10.
Kann mir jemand helfen wo das Problem ist?

Ich vermute hier:

Java:
String format = "#0" + String.format("%." + formatSettings.getNumberDecimalPlaces() + "f", .1)
.replace("1", "0").substring(1);

Aber auch hier bekomme ich #0,00 war doch eigentlich richtig ist?

Java:
public static String formatNumber(FormatSetting formatSettings, Number d) {

        StringBuilder value = new StringBuilder();

        try {
            if (formatSettings != null) {

                DecimalFormatSymbols dcm = new DecimalFormatSymbols(Locale.getDefault());

                if (formatSettings.getNumberDecimalSeparator() != null)
                    dcm.setDecimalSeparator(formatSettings.getNumberDecimalSeparator().charAt(0));

                if (formatSettings.getNumberThousandSeparator() != null)
                    dcm.setGroupingSeparator(formatSettings.getNumberThousandSeparator().charAt(0));
                
                String format = "#0" + String.format("%." + formatSettings.getNumberDecimalPlaces() + "f", .1)
                        .replace("1", "0").substring(1);

                if (formatSettings.getNumberPattern() != null
                        && !FormatSetting.Pattern.NONE.toString().equals(formatSettings.getNumberPattern())) {
                    format = "+" + formatSettings.getNumberPattern() + ";-" + formatSettings.getNumberPattern();
                }

                DecimalFormat dc = new DecimalFormat(format, dcm);
                String numberStr = dc.format(d);

                if (formatSettings.getNumberNegativeSignSymbol() != null && FormatSetting.SignPosition.BEGINNING
                        .toString().equals(formatSettings.getNumberNegativeSignPosition())) {
                    if (d.doubleValue() < 0)
                        value.append(formatSettings.getNumberNegativeSignSymbol());
                }

                value.append(numberStr);

                if (formatSettings.getNumberNegativeSignSymbol() != null && FormatSetting.SignPosition.END.toString()
                        .equals(formatSettings.getNumberNegativeSignPosition())) {
                    if (d.doubleValue() < 0)
                        value.append(formatSettings.getNumberNegativeSignSymbol());
                }
            }

            return value.toString();

        } catch (Exception ex) {
            ex.printStackTrace();
            value = new StringBuilder("" + d);
        }
        return "";
    }

Hier mal die Ausgabe im Debugger von DecimalFormat dc

1612251604010.png


Hier meine Werte für die Einstellung:
1612252122268.png
 
kneitzel

kneitzel

Top Contributor
Aber auch hier bekomme ich #0,00 war doch eigentlich richtig ist?
Das , ist doch das Grouping Separator und nicht der Decimal separator. Siehe
da wird das in einer Tabelle auch erläutert.

Das Du später ein , in der Ausgabe haben willst, spielt da keine Rolle. Das kommt ja durch DecimalFormatSymbols - diese ändern aber nichts an den Vorgaben des Formats!
 
I

internet

Top Contributor
hmmmm und was muss ich dann ändern? So ganz steige ich da nicht durch
 
kneitzel

kneitzel

Top Contributor
Vermutlich willst Du, dass dein format String #0.00 ist. Aber genau kann ich es nicht sagen, da ich nicht wirklich durchblicke, was Du da aus welchem Grund gebaut hast.

Aber bezüglich des Codes evtl. zwei Dinge, die mir aufgefallen sind:
- Catch von Exception ist etwas, das man in der Regel vermeiden sollte... Statt dessen gezielt die Exceptions abfangen, die notwendig sind.
- Du setzt in catch value aber gibst den leeren String zurück - Du willst evtl. generell value.toString() zurück geben ...
 
krgewb

krgewb

Top Contributor
Java 1.8:
Java:
import java.text.DecimalFormat;

public class Main {

	public static void main(String[] args) {

		double z = 10.0;

		DecimalFormat dz = new DecimalFormat("#0.00");
		System.out.println(dz.format(z));

		DecimalFormat dz2 = new DecimalFormat("#0,00");
		System.out.println(dz2.format(z));
	}

}

Ausgabe:
Java:
10,00
0.10
 
kneitzel

kneitzel

Top Contributor
Nur noch als kurze Randbemerkung bezüglich dem "," -> Das ist ja wie bereits geschrieben ein Grouping Separator. Du willst also nach zwei Zeichen Gruppieren ... und Du willst Da noch eine 0 davor haben. Daher ist das weiterhin eine 10. Diese bekommt aber noch eine führende 0: 010 und nach den ersten Zwei Ziffern kommt der grouping separator: 0.10.

Bezüglich Grouping Separator kann man ja einfach mal paar mehr Dinge machen, wie z.B. den Standard Separator durch ein Leerzeichen ersetzen um dann mal mehrere Separatoren anzugeben:
Java:
        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
        symbols.setGroupingSeparator(' ');
        DecimalFormat formater = new DecimalFormat("#,#0", symbols);
        System.out.println(formater.format(123.0));
        System.out.println(formater.format(1234.0));
        System.out.println(formater.format(12345.0));

Dann wird die Funktion deutlich falls dies noch etwas unklar war denke ich. # sind halt optionale Ziffern, 0 steht für eine Ziffer, die immer geben werden soll und "," für den Grouping Separator. Wichtig ist halt, dass es um eine feste Gruppierung geht. Also gehen immer nur gleiche Blöcke und kein "#,##,#" oder so (Also am Ende nur eine Ziffer, davor zwei ....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Out.format problem. Java Basics - Anfänger-Themen 3
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
W OOP Objektorientiert: Darstellung von Uhrzeiten im 24-Stunden-Format Java Basics - Anfänger-Themen 15
L Java Date Format ändern Java Basics - Anfänger-Themen 5
M JSON Format Java Basics - Anfänger-Themen 5
B Schleife erstellen mit String Format "001" bis "999" Java Basics - Anfänger-Themen 2
N jodaTime java.lang.IllegalArgumentException: Invalid format Java Basics - Anfänger-Themen 3
V Datentypen Richtiges Format abspeichern Java Basics - Anfänger-Themen 13
F JSON in dokumentierten Format als PDF Java Basics - Anfänger-Themen 3
J Jar Format Java Basics - Anfänger-Themen 4
J Programm im Jar-Format funktioniert nicht richtig Java Basics - Anfänger-Themen 9
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
M Variablen Ausgabe bei System.out.format? Java Basics - Anfänger-Themen 3
M String.format Java Basics - Anfänger-Themen 3
S Fehlermeldung bei format methode Java Basics - Anfänger-Themen 1
L Java Format Strings Java Basics - Anfänger-Themen 2
S String.format Fehler Java Basics - Anfänger-Themen 12
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
C Welches Format gibt Java aus? Java Basics - Anfänger-Themen 5
G String auf Format prüfen Java Basics - Anfänger-Themen 3
A String auf Format überprüfen Java Basics - Anfänger-Themen 7
U String.format (%s, %d) für Nummern Java Basics - Anfänger-Themen 37
L Erste Schritte int-Format Java Basics - Anfänger-Themen 5
N Change date Format Java Basics - Anfänger-Themen 2
T String.format Exception Java Basics - Anfänger-Themen 7
M Simple Date Format Java Basics - Anfänger-Themen 2
C string-Format Java Basics - Anfänger-Themen 6
O Tabelle Formatieren mit system.out.format Java Basics - Anfänger-Themen 11
Z System.out.format, Hilfe. Java Basics - Anfänger-Themen 14
H format() - methode Java Basics - Anfänger-Themen 2
L X509 Zertifikat in PKCS#7 Format Java Basics - Anfänger-Themen 2
K Methoden format() mit Point(x, y)-Objekt Java Basics - Anfänger-Themen 14
M Zeit von microsekunden auf Format mm:ss Java Basics - Anfänger-Themen 13
E formartierte Aussgabe mit JTextPane und String.format Java Basics - Anfänger-Themen 5
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
Spin System.out.format Java Basics - Anfänger-Themen 2
N Datumseingabe im bestimmtem Format Java Basics - Anfänger-Themen 16
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
D Bytes für WAV Format anpassen Java Basics - Anfänger-Themen 5
K Double Format Java Basics - Anfänger-Themen 4
-horn- Wie am Einfachsten mit Config-Datei umgehen. Welches Format? Java Basics - Anfänger-Themen 6
T Umwandeln in .jar - Format Java Basics - Anfänger-Themen 2
B Datumsstring umwandeln in richtiges dd.mm.yyyy format? Java Basics - Anfänger-Themen 2
R String.format() funktioniert nicht Java Basics - Anfänger-Themen 2
G String in Date Format umwandeln Java Basics - Anfänger-Themen 8
M String.format() max. Spaltenbreite Java Basics - Anfänger-Themen 2
G Time-Format-Klasse ode so Java Basics - Anfänger-Themen 2
P e-format Java Basics - Anfänger-Themen 5
H Format des Datums in Logdatei Java Basics - Anfänger-Themen 2
M Festes Format bei der Ausgabe einhalten! Java Basics - Anfänger-Themen 4
S long millisekunden nach Uhrzeit format Java Basics - Anfänger-Themen 5
S Java 1.5 System.out.format() Java Basics - Anfänger-Themen 2
R Alternative zu "Format" in Java 1.4 Java Basics - Anfänger-Themen 3
R Java 5.0 / String.format - Warning Java Basics - Anfänger-Themen 8
G Zeit auslesen in bestimmtem Format Java Basics - Anfänger-Themen 2
X Dezimal/-Hexcode in lebares format umwandeln Java Basics - Anfänger-Themen 4
V String Format Java Basics - Anfänger-Themen 4
B welches format hat java.sql.date? Java Basics - Anfänger-Themen 9
G format für int Java Basics - Anfänger-Themen 10
B Integer format bestimmen Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
S Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
L Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Anzeige

Neue Themen


Oben