您的位置:首页 > 其它

浮点数计算注意精度问题

2016-01-05 00:43 288 查看
最近看书看到一个简单的题,

问,下面程序运行结果是什么?

#include <stdio.h>

int main(int argc, char *argv[]) {
	double i;
	for (i = 0; i != 10; i += 0.1) {
		printf("%.1f\n", i);
	}
	return 0;
}


主观以为是输出0~10之间一位小数点的小数

但不是,这是个陷阱,其实是无限循环

搜索网友解释 http://blog.sina.com.cn/s/blog_6da76f9b0100yr8d.html
接下来调用gdb输出中间结果来观察,发现 i 自加0.1后,并不是我们预想的等于0.1,而是等于 0.10000000000000001. 再往下执行几次, i 的值分别是0.20000000000000001, 0.30000000000000004, 0.40000000000000002

等我研究gdb后再来试试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: