0

我有一个方法可以为我的代码中的其他内容计算两个偏移量。我将这些偏移量写入输出,结果是: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);

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

4

1 回答 1

2

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

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

文档中Math.Sqrt

d parameter  | Return value
Negative     | NaN

来自维基百科

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

于 2014-06-01T16:27:02.603 回答