算术运算给出了错误的结果

时间:2014-12-03 09:07:33

标签: c++ c eclipse-cdt

我可能会遗漏一些非常基本的东西。但我不知道如何找出基本的东西。当我将T设置为10并且dt设置为0.1时,我应该得到结果101但是我得到结果为100.为什么会这样?

n_sim_steps = (int)(T/dt) + 1

此外,如果我在eclipse中将其作为手表执行,则返回101,但在代码中它会产生100。

2 个答案:

答案 0 :(得分:5)

应该是

n_sim_steps = (int)(T/dt + 0.5) + 1

您是precission loss

的受害者 由于此丢失,

10 / 0.1可能为99.999999999999,并且可能会int作为99投放回0.5。添加{{1}}然后进行强制转换将确保结果已四舍五入。

答案 1 :(得分:0)

你最好使用ceil功能。

功能签名

double ceil (double x);
像ceil(2.3)一样会得到3

相关问题