問題があります。シミュレーションを実行する前に、クラス「invKin」でこの関数を取得して、いくつかのパラメーターを設定しました。
void IK_mm4::set_timesetting(double *T_horiz_, double *delta_t_)
{
T_horiz = T_horiz_;
delta_t = delta_t_;
k_end = (int)floor((*T_horiz)/(*delta_t));
cout << "k_end = " << k_end <<endl;
}
それは私のメインファイルで呼び出されます
...
double delta_t = 5e-3;
double *T_desired = new double(5.0);
...
invKin.set_timesetting(T_desired,&delta_t);
...
問題は今です。私の大学のPCでは、すべてが正常であり、k_endの値は「1000」です。私の自宅のPCでは、システムはどういうわけか値「999」を返しています。* T_desiredの値を「0.05」に変更すると、coutは両方のPCで「10」の正しい値を示します。
変数を使用することをすでに確認しました
double k_end_test = (*T_horiz)/(*delta_t);
それは「1000」の正しい解を与えています。エラーは、floor関数またはint変換にある必要があります。私が行った場合
int k_end_test2 = (int)(k_end_test);
また
double k_end_test2 = floor(k_end_test);
結果は常に「999」です。
誰かがこれがどこから来ることができるかについての考えを持っていますか?
どんなヒントにも感謝しています!ありがとう!