int b = 1 / 0.00001不给100000

时间:2014-10-15 10:16:34

标签: c++ floating-point double multiplication

我不明白C ++如何不能像简单的计算器那样进行简单的计算。我有使用双除法和乘法产生错误结果的代码。一个例子:

#include <iostream>
int main()
{
    double a = 0.00001;
    int b = 1/a;
    std::cout <<b<<std::endl;
    return 0;
}

当它应该给出100000时,它会给出99999.我怎样才能得到正确的结果?

Windows 7 64位,MSVC2012

编辑:谢谢您的解释。我推断,为了解决我的问题,我必须在转换为int之前将其舍入。我想知道这是否是默认的做法,因为这种错误对于任何基于十进制计算的程序来说都是不可接受的。

1 个答案:

答案 0 :(得分:2)

double a = 0.00001;

使用0.00001无法准确表示double等浮点数。 a实际上比0.00001稍微大一点。因此,1/a100000小一点,将其int截断为99999