Ho 2 doppi nullable, un valore previsto e un valore effettivo (chiamiamoli valore e valoreSpecificato). Viene trovata una percentuale usando 100 * (valore/valoreSpecificato). Tuttavia, se valueExpected è zero, restituisce NaN. Tutto bene finora.Confronto Nullable double NaN in C#
Ora, cosa devo fare se devo verificare il valore, per vedere se è NaN? Normalmente si potrebbe usare:
if (!Double.IsNaN(myDouble))
Ma questo non funziona con i valori Null (isNaN funziona solo con variabili non nullable). Ho cambiato il mio codice per fare il check (valueExpected == 0), ma sono comunque curioso: c'è un modo per verificare un NaN nullable?
Modifica: Quando dico che il codice non funziona, voglio dire che non verrà compilato. Il test per null prima non funziona.
Forse è solo studio visivo che impedisce a me. Ho avuto qualcosa di simile: ' se (myDouble! = Null) { se {// fare cose (Double.IsNaN (myDouble)!)! } } ' Ma questo e il tuo codice non vengono compilati, non mi piace ancora utilizzare IsNaN, anche dopo il controllo 'è nulla'. –
Hai visto ".Value" dopo il nome della variabile "d". d.Value è un double e dovrebbe essere compilato definitivamente. –
Il mio codice viene compilato correttamente. Il controllo "è nullo" che hai aggiunto non cambia nulla. Il tuo codice è ancora errato. 'myDouble' è un' Nullable 'mentre' IsNaN() 'si aspetta un' double'. Tu ** devi ** usare la proprietà '.Value'. –