views:

65

answers:

2

On a Windows PC in Japan, this line of C# throws a format exception:

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

This line executes fine on my PC in the U.S.

Don't know where to begin troubleshooting this one. Any thoughts?

Thanks in advance, Jim

A: 

First, you should determine the double value for "NaN". Anyway, parsing non numerical format string will cause System.FormatException, you should catch it and set double value manually.

double x;
string foo = "NaN";
try 
{
    x = double.Parse(foo);
}
catch
{
    x = 0.0;
}
fish potato
Actually `TryParse` is the preferred method as it does not rely on an exception for control flow.
ChaosPandion
But the variable needs to be initialized to Double.NaN. This value exists in a file that is initializing the double.
Jim C
+2  A: 

I see what the problem is. Try using the invariant format provider.

double d = double.Parse("NaN", CultureInfo.InvariantCulture);
ChaosPandion
I can help but chuckle like a little kid when I use `double d;`.
ChaosPandion
I'll send the user this test. If it succeeds, what does this mean? That they have some sort of Japanese localization turned on in Windows?
Jim C
@Jim - That is exactly what it means.
ChaosPandion