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

Ric*_*dT. 2 c# math

这给了我0:

int B=-4;
double A = Math.Sqrt(1/B);
Run Code Online (Sandbox Code Playgroud)

但是这个NaN

double A = Math.Sqrt(-4);
Run Code Online (Sandbox Code Playgroud)

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

编辑:谢谢你的答案.我将添加这个:

 int B=0;
 double A = 1/Math.Sqrt(B);
Run Code Online (Sandbox Code Playgroud)

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

TGl*_*zer 12

这里

int B=-4;
double A = Math.Sqrt(1/B);
Run Code Online (Sandbox Code Playgroud)

是相同的

double A = Math.Sqrt(0);
Run Code Online (Sandbox Code Playgroud)

因为如果用整数除整数,你会得到一个整数