2008-12-12 4 views

Antwort

6

Die Zugabe einer Zahl zu NaN ergibt NaN. Es wird nicht erwartet, dass eine Ausnahme verursacht wird. Ich verstehe, dass dies IEEE 754 entspricht.

0
public static void main(String args[]) 
{ 
    Double d = Double.NaN + 1.0; 
    System.out.println(d); 
} 

druckt Double.Nan. Kann jemand die Quellimplementierung erklären?

public static final double POSITIVE_INFINITY = 1.0/0.0; 
    public static final double NEGATIVE_INFINITY = -1.0/0.0; 
    public static final double NaN = 0.0d/0.0; 
+0

Per Definition 0/0 = NaN. Siehe http://en.wikipedia.org/wiki/NaN. –

+0

Eh, ich habe nicht gesehen, dass Gamecats Antwort sich auf diesen bezieht. –

1

Um Steve B Frage zu beantworten:

POSITIVE_INFINITY die größte postive Zahl ist, die Sie speichern können, wenn Sie unbegrenzten Speicherplatz haben. Ohne diesen Luxus müssen wir eine Konstruktion wie 1.0/0.0 verwenden, die einen guten Job macht. Das gleiche gilt für NEGATIVE_INFINITY, aber dann die größte negative Zahl.

NaN wird normalerweise als 0.0/0.0 definiert, weil es keine solche Zahl wie 0/0 gibt, die sich perfekt für ein NaN eignet.