C# 为什么Sqrt(-4)是NaN,而Sqrt(1/-4)=0?

C# 为什么Sqrt(-4)是NaN,而Sqrt(1/-4)=0?,c#,math,C#,Math,这给了我0: int B=-4; double A = Math.Sqrt(1/B); 但是这个 double A = Math.Sqrt(-4); 第一次计算不失败或至少不返回NaN以及负数的平方根是如何可能的 编辑:谢谢你的回答。我要补充一点: int B=0; double A = 1/Math.Sqrt(B); 为什么这不是零分例外 您的第一个代码相当于: int B = -4; int C = 1 / B; double A = Math.Sqrt(C); 现在,请执行以下

这给了我0:

int B=-4;
double A = Math.Sqrt(1/B);
但是这个

double A = Math.Sqrt(-4);
第一次计算不失败或至少不返回NaN以及负数的平方根是如何可能的

编辑:谢谢你的回答。我要补充一点:

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

为什么这不是零分例外

您的第一个代码相当于:

int B = -4;
int C = 1 / B;
double A = Math.Sqrt(C);
现在,请执行以下操作:

Console.WriteLine(C);
这里

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

double A = Math.Sqrt(0);

因为如果你把一个整数除以一个整数,你会得到一个整数,你不会得到一个例外,因为
double
可以表示被零分割的结果为
+无穷大
。如果你有第二个问题,那么把这个问题标记为已回答,然后开始一个新问题。如果更多的问题不断出现,并且不清楚哪些问题有答案,那么试图回答这个问题的人就很难回答。