2010-07-02 3 views
5

Sur un PC Windows au Japon, cette ligne de C# renvoie une exception de format:C# parvient pas à analyser NaN comme un double

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

Cette ligne exécute bien sur mon PC aux Etats-Unis

Don » Je ne sais pas par où commencer le dépannage de celui-ci. Des pensées?

Merci à l'avance, Jim

Répondre

7

Je vois quel est le problème. Essayez d'utiliser le fournisseur de format invariant.

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

Je peux aider mais rire comme un petit enfant quand j'utilise 'double d;'. – ChaosPandion

+0

Je vais envoyer ce test à l'utilisateur. Si cela réussit, qu'est-ce que cela signifie? Qu'ils ont une sorte de localisation japonaise activée dans Windows? –

+0

@Jim - C'est exactement ce que cela signifie. – ChaosPandion

-3

Tout d'abord, vous devez déterminer la valeur double pour "NaN". Quoi qu'il en soit, l'analyse de la chaîne de format non numérique provoquera System.FormatException, vous devriez l'attraper et définir manuellement la double valeur.

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

En fait, TryParse est la méthode préférée car elle ne repose pas sur une exception pour le flux de contrôle. – ChaosPandion

+1

Mais la variable doit être initialisée à Double.NaN. Cette valeur existe dans un fichier qui initialise le double. –

Questions connexes