我真的不明白为什么这个表达式只在
时才给我一个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错误。
答案 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)
我(受过教育的)猜测是南方已经朝着这个方向发展,因为当模块为零时它将是不确定的