Essi non sono così tanto qualcosa che si utilizzare come sono qualcosa che è necessario essere a conoscenza di:
double hmm = 1.0/0.0;
double hmm2 = -1.0/0.0;
double hmm3 = 0.0/0.0;
Console.WriteLine("1/0 == {0}", hmm);
Console.WriteLine("-1/0 == {0}", hmm2);
Console.WriteLine("0/0 == {0}", hmm3);
uscita:
1/0 == Infinity
-1/0 == -Infinity
0/0 == NaN
EDIT: Per quanto riguarda questa domanda:
Se ci sono delle costanti come questi, perché fa float.Par se ("a") lancia un errore piuttosto che restituire float.NaN?
double.NaN
è in realtà una definizione matematica in un modo - è "definito" come 0.0/0.0
- mentre le parole "non un numero" implicano che qualcosa di simile double.Parse("a")
deve anche restituire double.NaN
, non è così. Perché?
La mia impressione è perché sarebbe impossibile determinare se il double.NaN
hai ricevuto è stato il risultato di dati di immondizia (nel caso della stringa) o il effettivo definizione di un numero indeterminato, come lo zero diviso per zero. Quindi, per fare una distinzione tra questi due casi, double.Parse("a")
lancia un Exception
, che ritengo sia più accurato.
si potrebbe usare TryParse piuttosto che analizzare? – Liam
Utilizzato a causa di operazioni matematiche. – Evgeny
@Evgeny: commento più vago di sempre. –