nachkommastellen wegoptimiert?!

dura4cell

Grünschnabel
hi folks,

hab da ein kleines problem. wieso optimiert mir java die genauigkeit weg (so deute ich jedenfalls das problem). hier der "problemcode":

Code:
double a = 15.95d;
double b = 0.3d;
double e = a * b;
System.out.println(e);  //4.784999999999999
float j = 15.95f;
float k = 0.3f;
float l = j * k;
System.out.println(l); //4.7850003

wie bekomme ich ein "richtiges" ergebnis? immerhin gibt es ein genaues resultat (4,785).

gruß dura4cell
 
hi folks,

hab da ein kleines problem. wieso optimiert mir java die genauigkeit weg (so deute ich jedenfalls das problem). hier der "problemcode":

Code:
double a = 15.95d;
double b = 0.3d;
double e = a * b;
System.out.println(e);  //4.784999999999999
float j = 15.95f;
float k = 0.3f;
float l = j * k;
System.out.println(l); //4.7850003

wie bekomme ich ein "richtiges" ergebnis? immerhin gibt es ein genaues resultat (4,785).
Gleitkommazahlen sind inhärent ungenau. Manche (einfache) reelle Zahlen (wie 0.3) sind überhaupt nicht darstellbar. Außerdem gibt es in der Nähe der Null "Löcher".

Du müßtest einen anderen Zahlentyp verwenden der das Rechnen mit beliebiger Genauigkeit ermöglicht, wie z.b. http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html

Gruß
 
Zurück