Wann kommt NaN als Ergsbnis raus?



  • Hallo,

    ich habe in meinem Programm sehr viele verschiedene Berechnungen. In einigen (seltenen) Fällen erhalte ich NaN (Not a Number) als Ergebnis. Das wundert mich, weil eigentlich immer die selbe Art von Eingaben einfließen.

    Z.B.:

    public static double gewichtetesArithmetischesMittel(DoubleVektor x, DoubleVektor sigma){
    		double ergebnis = 0;
    
    		if (x.size() == sigma.size()) {
    
    			DoubleVektor xGewichtet = new DoubleVektor();
    
    			for (int i=0 ; i<x.size() ; i++){
    				xGewichtet.add(x.get(i) * sigma.get(i));
    			}
    
    			double dividend = summe(xGewichtet);
    			double divisor = summe(sigma);
    
    			ergebnis = dividend / divisor;
    
    		} else {
    			System.out.println("WARNUNG: Gewichtetes arithm. Mittel nicht korrekt angewendet. x.size() != sigma.size().");
    		}
    		return ergebnis;
    	}
    

    Das ist eine der Funktionen, die manchmal NaN liefern. Ein DoubleVektor ist übrigens eine Klasse, die einen Vektor beinhaltet, der nur aus Double-Objekten besteht:

    public class DoubleVektor {
    	private Vector vektor;
    
    	public DoubleVektor() {
    		vektor = new Vector();
    	}
    
    	...
    
    	public void add(double wert) {
    		vektor.add(new Double(wert));
    	}
    
    	public double get(int i) {
    		return ((Double)(vektor.get(i))).doubleValue();
    	}	
    }
    


  • NaN kommt IMO NUR bei folgendem Ausdruck raus:
    0.0/0.0





  • Danke. Ich werd mal schauen, ob irgendwo 0/0 rauskommen kann. Ich glaub zwar nicht, dass es vorkommen kann, aber ich werds überprüfen.


Log in to reply