C# Sqrt方法不适用于';t返回号码

C# Sqrt方法不适用于';t返回号码,c#,math.sqrt,C#,Math.sqrt,我有一个方法,可以为代码中的其他内容计算两个偏移量。我将这些偏移量写入输出,结果是:不是数字。当我尝试将这些值分配给其他变量时,这些变量的值为0 这是我的代码: int w = 1200; int h = 1824; double offsetX = System.Math.Sqrt (-((9 * w * w) / 16)); double offsetY = System.Math.Sqrt (((9 * h * h) / 16) + ((9 * w * w) / 16) - offsetX

我有一个方法,可以为代码中的其他内容计算两个偏移量。我将这些偏移量写入输出,结果是:
不是数字。当我尝试将这些值分配给其他变量时,这些变量的值为0

这是我的代码:

int w = 1200;
int h = 1824;
double offsetX = System.Math.Sqrt (-((9 * w * w) / 16));
double offsetY = System.Math.Sqrt (((9 * h * h) / 16) + ((9 * w * w) / 16) - offsetX);
我不知道这是一个数学问题还是一个编程问题。为什么它返回这个奇怪的值?

-((9*w*w)/16)
表达式返回一个负值,即
-810000

这就是这个方法返回的原因

来自

来自

任何正数或负数的平方都是正数,并且 0的平方等于0因此,任何负数都不能有实平方 根。但是,可以使用一组更具包容性的 数字,称为复数,它包含的解决方案为 负数的平方根。


他们不能。负数的平方根不是实数。这是虚构的。@DanielA.White天哪。我忘了:谢谢
d parameter  | Return value
Negative     | NaN