首页 文章

从double转换为int时的值更改

提问于
浏览
3

基本问题,代码非常大,但我的问题是,它的核心是基本的:

我有一个称为变量的双值,如果我用cout <<变量检查它,它会给我,例如,982 .

下一行代码是int intvariable = variable .

然后,当我用cout << intvariable检查它时,我给了981 .

有趣的是,这并不总是发生 . 985它可能会保持在985,然后是984和983,它将返回983和982.我似乎无法想象这一点 . 我已经尝试将它转换为浮点数然后转换为int,或转换为另一个double,然后转换为int .

我需要它作为一个int所以我可以使用模数运算符 .

我应该指出,以前在代码中double小于1(即0.987),然后乘以小数位数,使其成为一个实数,正整数(但是,它仍然存储为一个双精度整数点) . 也许这与随机舍入有关?

1 回答

  • 2

    将浮点值转换为 int 将截断(返回值),这可能会导致您的问题,因为浮点数本身就是不精确的 . 尝试舍入数字,即 intvariable = (int)(0.5 + variable) . 您可能还对 fmod 函数感兴趣,该函数计算浮点除法的余数(请参阅http://www.cplusplus.com/reference/cmath/) .

相关问题