2010-07-02 10 views
5

auf einem Windows-PC in Japan, diese Zeile von C# wirft ein Format Ausnahme zu analysieren fehlschlägt:C# NaN als Doppel

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

Diese Linie führt auf meinem PC in den USA

Don‘ Ich weiß, wo ich mit der Fehlersuche beginnen soll. Irgendwelche Gedanken?

Vielen Dank im Voraus, Jim

Antwort

7

Ich sehe, was das Problem ist. Versuchen Sie den invarianten Formatanbieter zu verwenden.

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

Ich kann helfen, aber kichern wie ein kleines Kind, wenn ich 'double d;'. – ChaosPandion

+0

Ich schicke dem Benutzer diesen Test. Wenn es gelingt, was bedeutet das? Dass sie eine japanische Lokalisierung in Windows aktiviert haben? –

+0

@Jim - Das ist genau das, was es bedeutet. – ChaosPandion

-3

Zunächst sollten Sie den doppelten Wert für "NaN" bestimmen. Wie auch immer, das Analysieren von nicht numerischem Formatstring wird System.FormatException verursachen, Sie sollten es fangen und den doppelten Wert manuell setzen.

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

Eigentlich ist 'TryParse' die bevorzugte Methode, da es sich nicht auf eine Ausnahme für den Kontrollfluss verlässt. – ChaosPandion

+1

Die Variable muss jedoch auf Double.NaN initialisiert werden. Dieser Wert existiert in einer Datei, die das Double initialisiert. –