Ich habe Code kompiliert, der fälschlicherweise versucht, eine Nummer und Double.NaN hinzuzufügen. Ich frage mich, ob es eine Ausnahme gibt, die nicht erwischt wird? Weiß jemand, wie diese Situation gehandhabt wird?
Danke.Was passiert in Java, wenn Sie Double.NaN in einer Operation verwenden?
6
A
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;
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.
Per Definition 0/0 = NaN. Siehe http://en.wikipedia.org/wiki/NaN. –
Eh, ich habe nicht gesehen, dass Gamecats Antwort sich auf diesen bezieht. –