Asked By josephbubb
20-Jun-08 03:52 AM
Greetings,
Question about how the NaN constant is defined in .NET.
When I look at the C# definition for the System.Double NaN definition
in Roeder's Reflector, it looks like this:
public const double NaN = (double) 1.0 / (double) 0.0;
However, according to the .NET documentation (and the IEEE standard),
the actual definition is the result of dividing zero by zero (0/0).
Dividing 1/0 is positive infinity.
Interestingly, when I switch to the any other decompilation languages
(ex. Visual Basic, or Managed C++), the value of NaN is not
specifically defined as a division, but instead uses a constant. For
example, Visual Basic looks like this:
Public Const NaN As Double = NaN
Is this simply a bug in Reflector for C#, or am I missing something?
Thanks in advance.
By the way, I'm using Reflector version 5.1.2.0 and pointing to
the .Net framework version 2.0.50727.1433.