Wartość NAN oznacza Nie Liczba, a wartość IND oznacza Nieokreśloną liczbę. Ale jaka jest różnica między tymi dwoma. Jak możemy reprezentować oba w C++.Jaka jest różnica między numerami IND i NAN?
Odpowiedz
Ale jaka jest różnica między tymi dwoma.
Obie są tym samym. Niektóre platformy decydują się wyświetlać nieliczący się jako pewien wariant NaN
, podczas gdy inne wybierają wyświetlanie go jako pewną odmianę IND
.
Jak możemy reprezentować oba w C++.
std::numeric_limits<double>::quiet_NaN()
(lub float
lub long double
, jeśli wolisz).
Wygląda na to, że nie są one takie same, per se. Na platformie Microsoft IND wydaje się być specjalnym przypadkiem dla NaN. W szczególności, dla IND, wykładnikiem jest 0xFF, a mantysa jest 0x400000. Każda inna niezerowa mantysa daje NaN. – ysap
Jeśli operacja będzie generować większą liczbę dodatnią niż mogłyby być przechowywane w podwójne, operacja zwróci 1.#INF
na Windows lub Linux inf
Niektóre operacje nie robią matematycznego sensu, takie jak poświęcenie placu root z liczby ujemnej. Zarówno sqrt(-1.0)
, jak i log(-1.0)
zwrócą NaN, ogólny termin oznaczający "liczbę", która nie jest liczbą ".
Windows wyświetla NaN jako -1.#IND
("IND" dla "nieokreślonego"), podczas gdy Linux wyświetla nan
. Inne operacje, które zwrócą wartość NaN
, obejmują 0/0, 0 * ∞ i ∞/∞.
To nie jest Windows kontra Linux, to standardowa biblioteka kompilatora dyktuje, jak powinno być wyświetlane NaN. –
"Niektóre operacje nie mają sensu matematycznego" Operacje mają sens matematyczny, ale wyników nie można zapisać w liczbie zmiennoprzecinkowej, tzn. Sqrt (-1.0) to i, liczba urojona, której nie można przechowywane w float –
IND? Lub INF? INF jest standardem dla "nieskończoności". –