Rechnen mit Fließkommazahlen

Thomas Darimont

Erfahrenes Mitglied
Hallo!

Reicht einem bei Berechnungen mit Gleitkommazahlen die Genauigkeit von float aus und rechnet man trotzdem mit double Werten, so hat man oft das Problem mit Rundungsfehlern. Beispielsweise könnte das Ergebnis einer Berechnung (für unsere Genauigkeitsanfroderungen) nahe genug bei 0 liegen, so dass wir das Ergebnis als 0 werten.

Das könnte man dann beispielsweise wie folgt Bewerkstelligen:
Code:
package de.tutorials;

public class EpsilonExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        double a = 0.00000000000000000000000000000000000000000001; 
        double b = 0.000000000000000000000000000000000000000000001;
        System.out.println(isNearZero(a));
        System.out.println(isNearZero(b));
    }
    
    static boolean isNearZero(double value){
        return Math.abs(value) < Float.MIN_VALUE;
    }
}

Gruß Tom
 
Hallo Thomas,

stell doch auch mal ne Frage hier ins Forum :) ! Immer Antworten und nie Fragen stellen, das muss doch langweilig auf die Dauer sein.

Vg Erdal
 
Hi,

eine Möglichkeit auch mit solchen Zahlen zu rechnen.

1031.00000000000000000000000000000000000000232 - 1031.000000...

Es gibt einen Algorithmus der die Werte getrennt voneinander berechnet und zum Schluß wieder zusammenführt.

Gruß

Romsl
 

Neue Beiträge

Zurück