情况很严重……我必须在 5 天之内解决这个问题,但我不能出去。
问题:作为产品的简单操作总是会产生错误的结果。为什么?
代码摘录:
//all vars are float
// resultVec is a vector [3]
// Rs is a vector [3]
// accelerationvalues is a vector [3]
resultVec[0]=Rs[0]*accelerationvalues[0]+Rs[1]*accelerationvalues[1]+Rs[2]*accelerationvalues[2];
//debug to print result
Log.d("e", "("+Rs[0]+")*("+accelerationvalues[0]+")+("+Rs[1]+")*("+accelerationvalues[1]+")+("+Rs[2]+")*("+accelerationvalues[2]+")="+(resultVec[0]));
这是 Log Cat 结果:
但您可以简单地尝试这是错误的:在 google 上搜索
(0.040147018)*(-0.9942854)+(0.9984244)*(-0.32688835)+(0.039202508)*(9.343558)
你会发现真正的结果是8.67678679 × 10-9这与另一个非常不同..这个错误总是重复我执行程序,有时差异也在符号上!
问题是什么?
我已经尝试了各种方法来解决它!(有些贴在下面):
- 将 Rs 和加速度值保存在数组列表中,并在列表器之外执行计算。没有结果。
- 将 float 转换为 double,没有结果。
- 许多其他方式
PS 这个问题只发生在resultVec[0]
和resultVec[1]
上,而不是resultVec[2]
很好的计算。