2013-10-10 24 views
-3

我一直有很多NaN值在很长的程序中传播的问题,我不得不照顾。经过多次单步调试后,我能够发现在某个点有一个变量,其值由调试器显示为Infinity,还有另一个变量被这个无穷大变量分割,结果为NaN。这种行为是否正确,还是应该导致0?所有变量都是double变量。在Java中是由无穷大NaN划分的吗?

+0

您是否亲自尝试过这样做?测试似乎微不足道。 (尽管阅读http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.2以获得明确的答案)。 –

+0

因此oracle文档页面说它应该是0,那么这是否意味着我的NaN不是来自无穷大除法发生的代码行? – user13267

+0

这是由你来诊断。您没有向我们显示任何代码或导致您得出此结论的任何类型的诊断。 –

回答

1

在java中NaN划分无穷大吗?

简短的回答是号

Java语言规范(JLS 15.17.2)表示: “通过在符号零的无边结果的有限值的司”

它还提到这是“由IEEE 754算法规则确定的”。 无穷大除法给出NaN的唯一情况是当你将无穷大除以无穷大时。 (同一基准以上)。


如果你(真的)见不同,那么在你的Java “平台” 的错误。但这是一件非同寻常的事情,所以你需要在调用“bug”之前检查你的证据和方法真的很彻底

1 - ...最有可能在浮点硬件

+0

是的,你是对的,它不是任何数字除以无穷大,而是无穷大除以导致NaN的无穷大 – user13267

1

想想师的本质。

4/5 

意味着你有四件东西,并且你将它拆分成5件。结果是其中一件的尺寸。

4/infinity 

意味着你有四件东西,而且你将它分成无限小块。它永远不可能是0,因为号码是continuous,因为它是NaN,因为你永远不会发放4这些片段来测量其中一个片段。

+1

让我想起微积分......我生命中的黑暗时期。 – Maroun

+1

我知道你的痛苦兄弟..无论我喝多少东西,定形积分都会烧到我的大脑上。 – christopher

+0

但x /无穷大被认为是0不是吗?例如,当我们做x /(1/0)时,是不是认为是0? – user13267

相关问题