我有一个问题。在运行模拟之前,我在“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);
...
问题是现在。在我大学的电脑上,一切都很好,k_end 的值应该是“1000”。在我的家用电脑上,系统以某种方式返回值“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'。
有人知道这可能来自哪里吗?
我很感谢任何提示!谢谢你!