Sqrt方法不返回数字

时间:2014-06-01 16:23:39

标签: c# math.sqrt

我有一个方法可以为我的代码中的其他内容计算两个偏移量。我将这些偏移写入输出,结果是:Isn't number。当我试图将这些值分配给另一个变量时,这些变量就是这样的。值为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);

我不知道这是数学问题还是编程问题。为什么它会返回这个奇怪的值?

1 个答案:

答案 0 :(得分:2)

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

这就是为什么这个方法会返回NaN

来自the documentation of Math.Sqrt;

d parameter  | Return value
Negative     | NaN

来自Wikipedia;

  

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