有关浮点数误差的一个有趣的小例子
有关浮点数的有趣问题
试着运行以下程序
#include <iostream>
using namespace std;
int main() {
double i;
for (i = 0; i != 10; i += 0.1) {
printf("%.1f\n", i);
}
return 0;
}
你可能会发现结果和你想像的有一点点不同,结果是个无限循环。为什么会这样?实际是因为浮点数运算存在一定的误差,经过多次运算,1变成了0.999999999999999。所以为了解除这种影响一般要四舍五入,即floor(x+0.5) 。这个代码的处理方法,用int型进行循环在除10就行