一道神也做不对的C#读程序题!该如何解决
一道神也做不对的C#读程序题!
double i = -100;
i = Math.Sqrt(i);
if (i == double.NaN)
{
Console.Write("输出错误!");
}
else
{
Console.Write(i.ToString());
}
那个仁兄能够不用运行程序就知道输出结果。
------解决方案--------------------
if (i == double.NaN)
上面的判断语句有错误,改成下面的
if (double.IsNaN(i))
------解决方案--------------------
可以简化一下测试:
double i = -100;
i = Math.Sqrt(i);
if (i == double.NaN)
{
Console.Write("输出错误!");
}
else
{
Console.Write(i.ToString());
}
那个仁兄能够不用运行程序就知道输出结果。
------解决方案--------------------
if (i == double.NaN)
上面的判断语句有错误,改成下面的
if (double.IsNaN(i))
------解决方案--------------------
可以简化一下测试:
- C# code
double i = double.NaN; Console.WriteLine(i == double.NaN); // False; Console.WriteLine(double.Equals(i, double.NaN)); // True;
------解决方案--------------------
- C# code
Console.WriteLine("{0},{1}",i.GetHashCode(),double.NaN.GetHashCode()); Console.WriteLine(Equals(i, double.NaN));
------解决方案--------------------
http://www.msdn.net/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdoubleclassnantopic.asp
NET Framework 类库
Double.NaN 字段
表示不是数字 (NaN) 的值。此字段为常数。
[Visual Basic]
Public Const NaN As Double
[C#]
public const double NaN;
[C++]
public: const double NaN;
[JScript]
public var NaN : double;
备注
此常数的值是零被零除所得到的结果。
当运算结果未定义时返回此常数。
使用 IsNaN 确定某个值是否不是数字。不可能通过将某个值与另一个等于 NaN 的值进行比较来确定该值是否不是数字。