我不明白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之前将其舍入。我想知道这是否是默认的做法,因为这种错误对于任何基于十进制计算的程序来说都是不可接受的。
答案 0 :(得分:2)
double a = 0.00001;
使用0.00001
无法准确表示double
等浮点数。 a
实际上比0.00001
稍微大一点。因此,1/a
比100000
小一点,将其int
截断为99999
。