2013-03-08 20 views
5

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

+0

IND? O INF? INF è standard per "infinito". –

risposta

5

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).

+1

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

2

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 ∞/∞.

Refernce Link1

Refernce Link2

+1

Non è Windows vs Linux, è la libreria standard del compilatore che stabilisce come deve essere mostrato NaN. –

+0

"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 –

Problemi correlati