Un valore NAN significa Non un numero e il valore IND indica un numero indeterminato. Ma qual è la differenza tra questi due. Come possiamo rappresentare entrambi in C++.Qual è la differenza tra i numeri IND e NAN
risposta
Ma qual è la differenza tra questi due.
Sono entrambi la stessa cosa. Alcune piattaforme scelgono di visualizzare un non numero come una variante di NaN
, mentre altri scelgono di visualizzarlo come una variante di IND
.
Come possiamo rappresentare entrambi in C++.
std::numeric_limits<double>::quiet_NaN()
(o float
o long double
, se si preferisce).
Apparentemente, non sono gli stessi, per se. Sulla piattaforma Microsoft, IND sembra essere un caso speciale per NaN. Specificamente, per IND, l'esponente è 0xFF e la mantissa è 0x400000. Qualsiasi altra mantissa diversa da zero dà un NaN. – ysap
Se l'operazione avrebbe generato un numero positivo più grande di quello che potrebbe essere conservato in un doppio, l'operazione tornerà 1.#INF
su Windows o su Linux inf
Alcune operazioni non hanno senso matematico, come ad esempio prendendo la piazza radice di un numero negativo. Entrambi sqrt(-1.0)
e log(-1.0)
restituirebbero un NaN, il termine generico per un "numero" che è "non un numero".
Windows visualizza un NaN come -1.#IND
("IND" per "indeterminato") mentre Linux visualizza nan
. Altre operazioni che restituiscono un NaN
includono 0/0, 0 * ∞ e ∞/∞.
Non è Windows vs Linux, è la libreria standard del compilatore che stabilisce come deve essere mostrato NaN. –
"Alcune operazioni non hanno senso matematico" Le operazioni hanno senso matematico, ma i risultati non possono essere memorizzati in un numero in virgola mobile, cioè sqrt (-1.0) è i, un numero immaginario che non può essere memorizzato in un float –
IND? O INF? INF è standard per "infinito". –