有关浮点数误差的一个有趣的小例子

有关浮点数的有趣问题

试着运行以下程序

#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就行

posted @ 2021-02-02 20:19  life_if_forever  阅读(193)  评论(0编辑  收藏  举报