我可能会遗漏一些非常基本的东西。但我不知道如何找出基本的东西。当我将T设置为10并且dt设置为0.1时,我应该得到结果101但是我得到结果为100.为什么会这样?
n_sim_steps = (int)(T/dt) + 1
此外,如果我在eclipse中将其作为手表执行,则返回101,但在代码中它会产生100。
答案 0 :(得分:5)
应该是
n_sim_steps = (int)(T/dt + 0.5) + 1
的受害者
由于此丢失, 10 / 0.1
可能为99.999999999999
,并且可能会int
作为99
投放回0.5
。添加{{1}}然后进行强制转换将确保结果已四舍五入。
答案 1 :(得分:0)
你最好使用ceil功能。
功能签名
double ceil (double x);
像ceil(2.3)一样会得到3