2010-07-02 11 views
5

su un PC Windows in Giappone, questa linea di C# genera un'eccezione formato:C# non riesce ad analizzare NaN come una doppia

double d = double.Parse("NaN"); 

Questa linea viene eseguito bene sul mio PC negli Stati Uniti

Don' so dove iniziare a risolvere questo problema. qualche idea?

Grazie in anticipo, Jim

risposta

7

Vedo qual è il problema. Prova a utilizzare il fornitore di formati invarianti.

double d = double.Parse("NaN", CultureInfo.InvariantCulture); 
+0

Posso aiutare ma ridacchia come un bambino quando uso 'double d;'. – ChaosPandion

+0

Invierò all'utente questo test. Se ha successo, cosa significa? Che hanno una sorta di localizzazione giapponese attivata in Windows? –

+0

@Jim - Questo è esattamente ciò che significa. – ChaosPandion

-3

In primo luogo, è opportuno determinare il valore doppio per "nan". In ogni caso, l'analisi stringa di formato non numerico causerà System.FormatException, si dovrebbe prenderlo e impostare manualmente valore doppio.

double x; 
string foo = "NaN"; 
try 
{ 
    x = double.Parse(foo); 
} 
catch 
{ 
    x = 0.0; 
} 
+1

realtà 'TryParse' è il metodo preferito in quanto non si basa su un'eccezione per flusso di controllo. – ChaosPandion

+1

Ma la variabile deve essere inizializzato a Double.NaN. Questo valore esiste in un file che sta inizializzando il doppio. –

Problemi correlati