乘以0时NaN错误JAVA

时间:2018-03-27 16:10:03

标签: java nan

我真的不明白为什么这个表达式只在

时才给我一个NaN错误
acceleration.module - Ambient.friction = 0

double x = (speed.module * speed.direction.x()) + ((acceleration.module-Ambient.friction) * acceleration.direction.x())*time;

此外,如果我添加这样的pharentesis:

double x = ((speed.module * speed.direction.x()) + ((acceleration.module-Ambient.friction) * acceleration.direction.x()))*time;

它再次给我一个NaN错误。

2 个答案:

答案 0 :(得分:0)

在第一个中,第二个值乘以时间。

double x = (speed.module * speed.direction.x()) + ((acceleration.module-Ambient.friction) * acceleration.direction.x())*time;

另一方面,整个事情乘以时间:

double x = ((speed.module * speed.direction.x()) + ((acceleration.module-Ambient.friction) * acceleration.direction.x()))*time;

这让我觉得你在多次与时间之前溢出了第二个中的双值。使用双溢出,您将获得神奇的值Double.POSITIVE_INFINITY或Double.NEGATIVE_INFINITY

您很可能使用Double.POSITIVE_INFINITY或Double.NEGATIVE_INFINITY将时间倍增,结果为NAN。

将计算更改为一系列步骤。对于每个步骤,通过查找Double.POSITIVE_INFINITY或Double.NEGATIVE_INFINITY来检查溢出结果。这将告诉你哪些事情发生了变化。你几乎肯定会在某个地方溢出,但我们看不到你正在处理的数字,所以我无法确切地告诉你在哪里。

答案 1 :(得分:0)

我(受过教育的)猜测是南方已经朝着这个方向发展,因为当模块为零时它将是不确定的