状況は劇的です... この問題を解決しなければならないのは 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]
によく計算されています。