我有一个方法可以为我的代码中的其他内容计算两个偏移量。我将这些偏移写入输出,结果是: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);
我不知道这是数学问题还是编程问题。为什么它会返回这个奇怪的值?
答案 0 :(得分:2)
-((9 * w * w) / 16)
表达式返回负值-810000
。
这就是为什么这个方法会返回NaN
。
来自the documentation of Math.Sqrt
;
d parameter | Return value
Negative | NaN
来自Wikipedia;
任何正数或负数的平方都是正数,而且 0的平方为0. 因此,没有负数可以具有实数 根。但是,可以使用更具包容性的一组 数字,称为复数,确实包含解决方案 负数的平方根。