PDA

Visualizza la versione completa : [c] not a number


pdpmpd
15-02-2004, 20:27
qualcuno si ricorda quali erano i motivi per cui una variabile double non poteva essere visualizzata (mostrando un "nan", not a number)?
grazie.

iguana13
15-02-2004, 21:25
A me capitato che venga visualizzato "#INF" (infinito), "-#INF" e "#IND" (indeterminato).

Poi magari dipende dal sistema... :bh:

LeleFT
15-02-2004, 21:31
Una variabile che rappresenta un numero in virgola mobile viene stampato come un NAN quando la sua codifica binaria ESCE dallo standard IEEE per la rappresentazione dei numeri.

Lo standard IEEE specifica che un numero in notazione standard quando scritto nel modo seguente:

1 bit per il segno
5 bit (se non vado errato) per l'esponente
i rimanenti bit per la mantissa (nella codifica a 32 bit, rimangono, quindi 26 bit).


C' una regola, per, che riguarda proprio i bit della mantissa: il primo numero della mantissa deve essere un 1. Se il primo bit della mantissa non un 1 si entra nel campo dei numeri cosiddetti DENORMALIZZATI i quali non seguono le regole standard ma servono per rappresentare ulteriori numeri che con lo standard non possono essere rappresentati (per esempio, appunto, l'INFINITO). Se il numero denormalizzato, per, non rappresenta nessuno dei particolari valori di questo "formato" allora la codifica binaria NON RAPPRESENTA UN NUMERO e, il valore della relativa variabile, viene stampato come NAN.


Ciao. :ciauz:

pdpmpd
15-02-2004, 21:35
possibile che dipenda dalla divisione 0/0 assegnata a un double? non mi capacito, le uniche operazioni che compie il mio programma sono moltiplicazioni, somme e divisioni con numeri "piccoli"

vedi allegato per l'errore

LeleFT
15-02-2004, 21:38
Non lo so... ma dubito: fra i numeri denormalizzati dovrebbe essere previsto anche l'INDEFINITO. Non so che operazioni vengano svolte con quei valori, ma a questo punto credo che dipenda dal S.O.


Ciao. :ciauz:

pdpmpd
15-02-2004, 21:39
ho capito, grazie.

iguana13
15-02-2004, 21:50
Infatti a me che ho win, 0/0 mi da #IND :ciauz:

Loading