Die Manipulation und Vergleich von floating-points in java

In Java der Gleitkomma-Arithmetik ist nicht vertreten, genau. Zum Beispiel dieser java-code:

float a = 1.2; 
float b= 3.0;
float c = a * b; 
if(c == 3.6){
    System.out.println("c is 3.6");
} 
else {
    System.out.println("c is not 3.6");
} 

Drucke "c ist nicht 3.6".

Ich bin nicht daran interessiert, Präzision jenseits von 3 Dezimalstellen (#.###). Wie kann ich den Umgang mit diesem problem zu vermehren schwimmt und vergleichen Sie zuverlässig?

  • Deklarieren Sie Schwimmer wie: float a = 1.2f; - und Doppelzimmer wie double d = 1.2d; Auch in if-Anweisung: if(c == 3.6f)
  • Als Ergänzung zu @bobah 's Antwort, dem empfehle ich einen Blick auf die Math.ulp() Funktion.
InformationsquelleAutor Praneeth | 2010-05-24
Schreibe einen Kommentar