Decimalformat gibt falsche Werte aus

Status
Nicht offen für weitere Antworten.

sm

Mitglied
Hallo,

hier ein Testcode:

Code:
import java.text.*;

public class Test
{
	
	public static void main (String args[])
	{
		DecimalFormat df;
		
		
		df=new DecimalFormat("#0.00");
		
		
		System.out.println("\n 1: "+df.format(1.9f));
		System.out.println("\n 2:"+df.format(21.9f));
		System.out.println("\n 3:"+df.format(781.9f));
		System.out.println("\n 4:"+df.format(3781.9f));
		System.out.println("\n 5:"+df.format(23481.9f));
		System.out.println("\n 6:"+df.format(250781.9f));
		System.out.println("\n 7:"+df.format(250781.9));
		System.out.println("\n 8:"+df.format(4250781.9f));														
		System.out.println("\n 9:"+df.format(250781.8f));
		System.out.println("\n 10:"+df.format(250781.8));		
		System.out.println("\n 11:"+df.format(250781.99f));
		System.out.println("\n 12:"+df.format(250781.99));
		System.out.println("\n 13:"+df.format(250781.89f));
		System.out.println("\n 14:"+df.format(250781.89));		
		
	}

}

Bei den .99 usw wird einfach ab- oder aufgerundet. Also ohne eine Logik (zumindest kann ich keine entdecken).
Die Ausgabe sieht wie folgt aus:

1: 1,90
2:21,90
3:781,90
4:3781,90
5:23481,90
6:250781,91
7:250781,90
8:4250782,00
9:250781,80
10:250781,80
11:250781,98
12:250781,99
13:250781,89
14:250781,89

Wichtig wären dabei die Nummer: 6, 8, 11.

Könnt ihr mir weiterhelfen?

MfG

sm
 

Leroy42

Top Contributor
Wie du durch deine sinnvollen Beispiele schon selbst erkennen müßtest.

6, 8 und 11 sind nah an der Genauigkeitsgrenze von floats.

Bei doubles hast du keine Probleme bekommen ==> Bleib einfach dabei.
 

Murray

Top Contributor
Dann vielleicht etwas ausführlicher (allerdings ohne Anspruch auf mathematische Korrektheit): sowohl float als auch double haben das Problem, dass sie den eigentlich unendlich großen Bereich der reellen Zahlen mit begrenzten Mitteln (konkret: mit einer vorab definierten Zahl von Bits; 32 Bit bei float und 64 Bit bei double ) abbilden müssen; deshalb werden die reellen Zahlen mit sog. Gleitkommazahlen approximiert.
Dabei gibt es einen beschränkten Wertevorrat (bei double ist er größer als bei float, aber eben immer noch begrenzt). Jede reelle Zahl musss bei der Abblidung auf double oder float dem nächstliegenden diskreten Wert aus dem Wertebereich zugeordent werden; daraus folgt auch, dass jeder möglicher float- oder double-Wert für unendlich viele verschiedene reelle Zahlen stehen kann.

Also, wie Leroy schon sagte: bei Deinem Beispiel erreichst Du bereits die Genauigkeitsgrenze für floats, während doubles die gewählten Zahlen noch hinreichend genau auflösen können.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D DecimalFormat: entfernt falsches Komma Allgemeine Java-Themen 12
H2SO3- DecimalFormat Allgemeine Java-Themen 9
K DecimalFormat Frage Allgemeine Java-Themen 2
J DecimalFormat überprüfen Allgemeine Java-Themen 8
W DecimalFormat ohne Tausendertrenner Allgemeine Java-Themen 2
T Decimalformat, Fehler beim runden? Allgemeine Java-Themen 8
J DecimalFormat vertauscht . und , Allgemeine Java-Themen 8
J DecimalFormat Allgemeine Java-Themen 4
L java.text.NumberFormat und java.text.DecimalFormat benutzen Allgemeine Java-Themen 2
N Zahl mit DecimalFormat formattieren Allgemeine Java-Themen 2
D problem mit decimalformat Allgemeine Java-Themen 5
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Tiago1234 CellReference cr = new CellReference("") gibt den falschen Wert zurück Allgemeine Java-Themen 49
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
Jose05 Gibt es einen Nachteil bei dem JDK 8? Allgemeine Java-Themen 7
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
M Warum gibt es Unterschiedliche Kommentar Zeichen Allgemeine Java-Themen 15
Tobero Eclipse Window builder gibt es da sowas wie @ignore? Allgemeine Java-Themen 1
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
F Überprüfen ob es Überschneidungen von Uhrzeiten (vom Typ Calendar) gibt Allgemeine Java-Themen 10
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
LimDul Spezifkation, wann es deprecation Warnings gibt Allgemeine Java-Themen 1
C Variablen == gibt immer false aus. Allgemeine Java-Themen 2
E gibt es BigDouble in Java ? Allgemeine Java-Themen 14
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
R JDK installieren Gibt es ab 2019 überhaupt noch Java? Allgemeine Java-Themen 6
P JSpinner gibt leeren Wert zurück Allgemeine Java-Themen 5
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
N Gibt es etwas allgemeineres as Object? Allgemeine Java-Themen 16
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
S Welche Java Techologien gibt es fürs Frontend Allgemeine Java-Themen 4
V Gibt es eine Möglichkeit die Internet auslastung mit Java auszulesen Allgemeine Java-Themen 11
L Gibt es in Java einen Property Editor? Allgemeine Java-Themen 2
S gibt testText nicht aus Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
L Methoden Methode gibt mir beim verschlüsseln mit RSA 0 bytes aus ? Allgemeine Java-Themen 1
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
L Konsole gibt Smileys aus Allgemeine Java-Themen 3
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
G Threads Gibt es eine Möglichkeit des Nichtblokierens? Allgemeine Java-Themen 5
C Vergleich von Enums gibt inkorrekte Werte Allgemeine Java-Themen 6
Jats Programm mit CMD Befehl hängt sich auf oder gibt error = 5 aus Allgemeine Java-Themen 4
V Gibt es einen Variablen Cast? Allgemeine Java-Themen 8
R JNI if abfrage gibt immer false zurück. Allgemeine Java-Themen 7
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
G Gibt es so eine SortedMap? Allgemeine Java-Themen 21
Z Boolean Abfrage gibt kein Boolean zurück, aber warum? Allgemeine Java-Themen 6
J Warum gibt es keinen Webbrowser auf Java-Basis? Allgemeine Java-Themen 8
E Gibt es Befehle für Kursor auf Konsole ? Allgemeine Java-Themen 3
J Logger gibt nicht alle Level aus Allgemeine Java-Themen 3
B Gibt es einen Unterschied zwischen Java 1.2 und Java 2? Allgemeine Java-Themen 7
J Calendar gibt falsche Wochenanzahl zurück Allgemeine Java-Themen 3
E Gibt es so etwas wie einen Windows Listener? Allgemeine Java-Themen 6
M Gibt es ein Jar - das alle Componente Automatisch anpasst? Allgemeine Java-Themen 14
R Gibt es eine JVM, die besser mit dem Speicher umgeht? Allgemeine Java-Themen 7
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
S [1/2done] Woher bekommt man libarys die es erst ab 1.6 gibt. Allgemeine Java-Themen 10
G Gibt es etwas ähnliches wie den ReadKey bei Pascal? Allgemeine Java-Themen 3
D Gibt es indizierte Arrays in Java? Allgemeine Java-Themen 3
G Da Jikes nicht mit java 5 geht, gibt es eine andere. Allgemeine Java-Themen 4
M Gibt es eigentlich einen Standalone-Java-ICQ-clone Allgemeine Java-Themen 19
M Gibt es ein Foren-System, dass in Java programmiert ist? Allgemeine Java-Themen 51
N char.At gibt Zeichenkette aus. aber leider 2x Allgemeine Java-Themen 10
G was gibt es für mögliche datenbanken? Allgemeine Java-Themen 6
TRunKX Gibt es ne fertige Java Funktion die Dateien vergleicht? Allgemeine Java-Themen 4
S auf einmal gibt es einen fehler. Allgemeine Java-Themen 3
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
J Unvorhersehbares Verhalten - benutze ich die falsche Bedingungsprüfung oder brauche ich Threads? Allgemeine Java-Themen 12
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
K Input/Output JUnit: Log Inhalte, falsche Assertion Allgemeine Java-Themen 2
S Ins Falsche Forum gepostet... Allgemeine Java-Themen 0
P BatchUpdateException für falsche Datumsformate anstatt SQLServerException Allgemeine Java-Themen 2
H2SO3- SCJP Chapter 3 Frage 10. Falsche Antwort? Allgemeine Java-Themen 15
P Falsche Ausgabe Allgemeine Java-Themen 5
E Falsche Ergebnisse bei PQ-Formel Berechnung Allgemeine Java-Themen 12
M rxtx OutputStream sendet falsche werte Allgemeine Java-Themen 3
Z new Date() liefert falsche Uhrzeit Allgemeine Java-Themen 12
M Kugelschnittberechnung liefert falsche Werte Allgemeine Java-Themen 4
I Teilweise falsche Darstellung jap. Zeichen im JEditorPane mit RTFEditorKit aus RTF-Datei Allgemeine Java-Themen 5
D falsche Annahme nach korrekter Auswertung (if, boolean) Allgemeine Java-Themen 2
D Problem mit java.util.scanner: Falsche Ergebnisse Allgemeine Java-Themen 4
hdi Logikfehler/falsche Methode? - Grösse von Dateien/Festplatte Allgemeine Java-Themen 14
M BufferedReader.read(char[] cbuf) liefert falsche Werte? Allgemeine Java-Themen 4
G Denksport: Der falsche Barren Allgemeine Java-Themen 9
W PrintWriter (PrintStream) sendet falsche Werte Allgemeine Java-Themen 18
oliver1974 "(.) should be accessed in a static way" Falsche W Allgemeine Java-Themen 6
N URLClassLoader läd falsche Klasse Allgemeine Java-Themen 3
G BigDecimal Rundet falsche Allgemeine Java-Themen 4
G ständig Iterator über Kollektion --> falsche Reihenfolge? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben