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.