与0相乘时出现NaN错误
我真的不明白为什么这个表达式只有在
acceleration.module - Ambient.friction = 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;
这又给了我一个错误
# 1 楼答案
在第一种情况下,第二个值乘以时间
另一方面,整个过程是乘以时间的:
这让我觉得,在随着时间的推移倍增之前,第二个值中的双值溢出了。使用double overflow,您可以获得双倍的魔法值。正无穷大或双精度。负无穷大
最有可能的情况是,你的时间是双倍的。正无穷大或双精度。负无穷大,结果为NAN
将计算更改为一系列步骤。在每个步骤中,通过查找Double来检查结果是否溢出。正无穷大或双精度。负无穷大。这会告诉你事情的发展方向。你几乎肯定是在某处溢出,但我们看不到你处理的数字,所以我不能告诉你确切的位置
# 2 楼答案
我(受过教育的)猜测是nan已经在这个方向上了,因为当模块为零时,它将是不确定的