2010-04-20 18 views

Odpowiedz

12

Wartości NaN nie są równe cokolwiek (jeśli jedna strona równości to NaN, równość jest fałszywa), więc NaN! = NaN. Oczywiście każde normalne podwójne jest równe

3

Nan jest jedynym podwójnym, które nie jest równe sobie. Zatem sprawdzenie v! = V spowoduje wygenerowanie tylko wartości True dla NaN.

Oto co ma do powiedzenia Java spec:

operatorzy zmiennoprzecinkowe produkować żadnych wyjątki (§11). Operacja że przepełnienia produkuje podpisane nieskończoność, operacją cieków produkuje wartość nieznormalizowane lub podpisane zero, i operacji, które nie ma matematycznie określony rezultat produkuje Nan. Wszystkie operacje numeryczne z NaN jako operandem dają wynik NaN jako . Jak już opisane NaN jest nieuporządkowana, więc operacja porównanie numeryczne udziałem jeden lub dwa Nans zwraca false i każdy ! = Porównanie z udziałem NaN zwraca prawda, w tym X! = X, gdy x jest liczbą.