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

Sha*_*aun 1 c c++ eclipse-cdt

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

n_sim_steps = (int)(T/dt) + 1
Run Code Online (Sandbox Code Playgroud)

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

Gya*_*ain 5

它应该是

n_sim_steps = (int)(T/dt + 0.5) + 1
Run Code Online (Sandbox Code Playgroud)

你是精算损失的受害者

10 / 0.1可能是99.999999999999因为这种损失而且可能会被归还int99.添加0.5然后转换将确保结果舍入.