Verständnisproblem double und float

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Zusammen!

Ich habe da ein kleines Verständnisproblem mit float und double. Vielleicht kann mir einer von euch helfen.
In folgendem Programm habe ich verschiedene Rechnungen, verstehe aber nicht, wie man auf die Werte kommt?!

public class P03 {


public static void main(String[] args) {
int k = 4;
double f = 4.56;
float fl = 4.44f;

System.out.println("3"+(k+f)); //38.5599999999999
System.out.println(3+k+f); //11.5599999999999
Warum bekomme ich hier, bei den double Werten 15 Stellen nach dem Komma heraus und bei der Ausgabe unten den genauen Wert der Berechnung?
System.out.println(10+k+f); //18.56



System.out.println(3+k+fl); //11.440001
Warum bekomme ich bei dieser Berechnung mit float, einen so komischen Wert raus?

}
}


Danke für eure Antworten im voraus!!!!
 
G

Guest

Gast
@hobbit
Dann liegt das nur daran, dass CPUs Probleme mit Gleitkommazahlen haben?

Diese Antwort ist nicht sehr befriedigend!

Gibt es keine Möglichkeit zu sagen, wann genau dieses Problem mit double oder float auftritt?
 

Marco13

Top Contributor
Deine Frage wird hier beantwortet:

http://babbage.cs.qc.edu/IEEE-754/Decimal.html

Intern werden Zahlen wie float oder double nach dem IEEE754-Standard verarbeitet. Und manche Zahlen kann man in dieser Form eben nicht genau darstellen... Man könnte genau spezifizieren, WANN eine Zahl in dieser Form genau dargestellt werden kann, aber ... das könnte etwas aufwändiger werden.
 

Wildcard

Top Contributor
Marco13 hat gesagt.:
Man könnte genau spezifizieren, WANN eine Zahl in dieser Form genau dargestellt werden kann, aber ... das könnte etwas aufwändiger werden.
Da wiederspreche ich im Allgemeinen Fall da die wenigsten Prozessoren sich an die IEEE halten.
Die Genauigkeit liegt oft leicht über den Vorgaben.
Insofern man nicht mit strictfp arbeitet (und im allgemeinen tut man das nicht) ist diese Frage ohne genau Kenntniss der Plattform nicht abschließend zu beantworten.
Wo absolute Genauigkeit notwendig ist nimmt man BigDecimal, ansonsten muss man als Entwickler in der Lage sein den Fehler abzuschätzen und sich Gedanken machen ob die erbrachte Genauigkeit ausreichend ist oder nicht.
 
G

Guest

Gast
@Wildcard

Danke für deine Antwort. Hat super weitergeholfen.
 

Marco13

Top Contributor
Das war eher einge theoretische Aussage. Sinngemäß: "Eine Zahl kann in dieser Form genau dagestellt werden, wenn sie (nachdem sie auf "0.xxx" normalisiert wurde) eine Summe von Zweierpotenzen mit negativen Exponenten 1 bis n ist" (oder so ähnlich). Aber für den allgemeinen, praktischen Fall hast du natürlich recht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S String Encoding Verständnisproblem Allgemeine Java-Themen 22
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
S Verständnisproblem beim Mocking Allgemeine Java-Themen 8
stroggi Bytecode LCMP - Verständnisproblem Allgemeine Java-Themen 3
H Listener Verständnisproblem Allgemeine Java-Themen 5
I Verständnisproblem mit nicht vorhandener Klasse Allgemeine Java-Themen 4
K OCJP Beispielfrage.. Verständnisproblem Allgemeine Java-Themen 2
M Java Threads - Wait Notify - Verständnisproblem Allgemeine Java-Themen 5
S iText PDF - Verständnisproblem beim Update von TableCells (Seitenzahlen) Allgemeine Java-Themen 2
B Stream Verständnisproblem Allgemeine Java-Themen 2
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
H Verständnisproblem mit Decimalseperator Allgemeine Java-Themen 2
G Verständnisproblem Allgemeine Java-Themen 11
A Verständnisproblem zur Hashtable Allgemeine Java-Themen 10
A Verständnisproblem Allgemeine Java-Themen 9
A Verständnisproblem mit GregorianCalendar Allgemeine Java-Themen 10
T Verständnisproblem Allgemeine Java-Themen 16
R ResourceBundle-Verständnisproblem Allgemeine Java-Themen 3
M Class#getClassLoader - Verständnisproblem Allgemeine Java-Themen 3
M Verständnisproblem bei mehrdimensionalen Arrays Allgemeine Java-Themen 3
S verständnisproblem bei File Allgemeine Java-Themen 6
L Verständnisproblem ? Allgemeine Java-Themen 3
V Verständnisproblem Eclipse BuildPath <-> Import Jar Fi Allgemeine Java-Themen 1
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
Neumi5694 double Vergleich Allgemeine Java-Themen 19
G Modulo - double Allgemeine Java-Themen 21
ReinerCoder Eclipse Fehlermeldung - The constructor Double(double) is deprecated Allgemeine Java-Themen 8
O Variablen Addition von Double-Werten ergibt seltsame 0.9999999 Zahlen Allgemeine Java-Themen 2
B Long in einen Double umwandeln und im Label anzeigen Allgemeine Java-Themen 7
VfL_Freak Double mit zwei festen NK-Stellen ausgeben Allgemeine Java-Themen 9
B List<Integer> ist List<Double> ? Allgemeine Java-Themen 6
SkyScreamer Variablen Int umwande in Double/ 1 Miner = 5 Cookies/s Allgemeine Java-Themen 2
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
T Double salted bcrypt Allgemeine Java-Themen 0
A Zahl abgerundet obwohl Double Allgemeine Java-Themen 9
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
Y String to Double ohne ParseDouble Allgemeine Java-Themen 11
D Double aus String auslesen Allgemeine Java-Themen 8
M double Array Allgemeine Java-Themen 8
P Wird double und float auf jedem Computer gleich berechnet? Allgemeine Java-Themen 10
C String in double[][] konvertieren! Allgemeine Java-Themen 5
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
Zettelkasten Double --> Integer Allgemeine Java-Themen 4
M float, double, BigDecimal Allgemeine Java-Themen 5
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
J String mit "," in Double Wert konvertieren Allgemeine Java-Themen 7
R Eclipse Verschiedene Ergebnisse bei Berechnung eines double-Werts Allgemeine Java-Themen 5
B Variablen Bug of Float. & Double.MIN_VALUE! Allgemeine Java-Themen 4
T ArrayList<double[]> persitent anlegen Allgemeine Java-Themen 7
K double Zufallszahl Allgemeine Java-Themen 6
S String in Double - letztes Zeichen fehlt Allgemeine Java-Themen 4
T int <-> integer, double <-> Double... Allgemeine Java-Themen 2
J Umstellung von double auf BigDecimal Allgemeine Java-Themen 5
H2SO3- String 1.000,00 in double umwandeln Allgemeine Java-Themen 12
S Double-Checked Locking Allgemeine Java-Themen 4
I 2D-Grafik Polygon mit Double Werten zeichnen Allgemeine Java-Themen 4
M FIFO Queue: bytes in, float/double/etc out Allgemeine Java-Themen 5
H double dispatch und equals(Object) Allgemeine Java-Themen 6
vandread Float/Double probleme bei der Multiplikation?! Allgemeine Java-Themen 3
J Casting Problem Object, Double und String Allgemeine Java-Themen 3
F double auf 2 Nachkommastellen runden Allgemeine Java-Themen 9
D Double to Integer - ist das möglich? Allgemeine Java-Themen 3
T Object auf Double, Int, String testen Allgemeine Java-Themen 5
H2SO3- großen double in string mit e umwandeln Allgemeine Java-Themen 4
T Problem: Double als Geldbetrag - Rundungsfehler Allgemeine Java-Themen 5
P große double Zahlen und modulo Allgemeine Java-Themen 8
G Double Wert über OutputStream verschicken Allgemeine Java-Themen 2
M größer als double? Allgemeine Java-Themen 4
N Double ohne Wissenschaftliche Schreibweiße Allgemeine Java-Themen 5
M Double Braces Notation um Collections zu initialisieren Allgemeine Java-Themen 9
R Eigene ArrayList vom Typ Short, Integer oder Double Allgemeine Java-Themen 4
R Double Werte aus byte[] auslesen Allgemeine Java-Themen 5
T XStream.toXML => double mit , anstelle . Allgemeine Java-Themen 3
G Fehler bei Array.getDouble mit Double[] als Argument! Allgemeine Java-Themen 6
A Problem bei Übergabe von Werten in ein double Array. Allgemeine Java-Themen 21
M Double immer mit 2 Kommastellen Allgemeine Java-Themen 3
G double in Date Allgemeine Java-Themen 5
reibi double-Wert auf 2 Stellen nach dem Komma abschneiden Allgemeine Java-Themen 6
G Genauigkeit von Double Allgemeine Java-Themen 2
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
V "double in Exponentialschreibweise" normal ausgebe Allgemeine Java-Themen 2
S List<Double> oder Double[] in double[] zu konvertieren Allgemeine Java-Themen 6
C casten vom Typ Object nach Double[][] Allgemeine Java-Themen 2
E int vs. float vs. double Allgemeine Java-Themen 7
T cast Object to Double[] Allgemeine Java-Themen 2
DEvent double von c nach Java Allgemeine Java-Themen 4
K Double-Zahl runden Allgemeine Java-Themen 4
J double 3.0 soll ohne Nachkommastelle ausgegeben werden Allgemeine Java-Themen 12
S Java Double addieren Allgemeine Java-Themen 3
A string zu double Allgemeine Java-Themen 3
T double to object Allgemeine Java-Themen 3
J Große Zahl (double) as text ausgeben? Allgemeine Java-Themen 2
padde479 String in double parsen Allgemeine Java-Themen 6
E double auf int runden, nicht abschneiden Allgemeine Java-Themen 2
G Double Zahl quadrieren Allgemeine Java-Themen 8
C double Zahlen mit drei NachkommaStellen in String umwandeln Allgemeine Java-Themen 2
T Nachkommastellen double Allgemeine Java-Themen 18
M double aufrunden Allgemeine Java-Themen 6
W Division mit float und double Allgemeine Java-Themen 2
D JTextfield für double werte Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben