如果这是一个愚蠢的初学者问题,请原谅我,但我真的不明白。
我有一个像这样声明的成员变量:
public Double Value;
当我将 3.14159265 分配给 Value 并尝试计算它的正弦值时,会发生这种情况:
system.out.println(Value.toString()); //outputs 3.14159265
Value = Math.sin(Value);
system.out.println(Value.toString()); //outputs NaN
事实上,我尝试的每一个值都会发生这种情况——即使是 0!无论参数值如何, Math.sin() 似乎总是产生 NaN 。
文档说:
如果参数为 NaN 或无穷大,则结果为 NaN。
但我的论点显然不是 NaN 或无穷大!
那里到底发生了什么?
更新
原来我是地球上最愚蠢的程序员。在我的项目中,整个代码当然比上面的例子复杂得多。它是一种表达式解析器和求值器,对于定义的数学函数,我使用 switch 子句来决定调用哪个函数 -在导致 sqrt 函数使用负参数执行的情况下,我忘记了 break 语句。
正如我所说 - 地球上最愚蠢的程序员......
我接受了最高的答案,因为它是最好的恕我直言。对不起各位浪费你们的时间-.-