为什么Sqrt(-4)是NaN和Sqrt(1 / -4)= 0?

时间:2013-04-21 13:26:32

标签: c# math

这给了我0:

int B=-4;
double A = Math.Sqrt(1/B);

但是这个NaN

double A = Math.Sqrt(-4);

第一次计算怎么可能没有失败,或者至少没有返回NaN,还有一个负数的平方根

编辑:谢谢你的回答。我将添加这个:

 int B=0;
 double A = 1/Math.Sqrt(B);

为什么这不是零除法异常?!

2 个答案:

答案 0 :(得分:12)

这里

int B=-4;
double A = Math.Sqrt(1/B);

相同
double A = Math.Sqrt(0);

因为如果将整数除以整数,则会得到一个整数

答案 1 :(得分:4)

您的第一个代码相当于:

int B = -4;
int C = 1 / B;
double A = Math.Sqrt(C);

现在这样做:

Console.WriteLine(C);