浮点数计算注意精度问题
2016-01-05 00:43
288 查看
最近看书看到一个简单的题,
问,下面程序运行结果是什么?
主观以为是输出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后再来试试
问,下面程序运行结果是什么?
#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后再来试试
相关文章推荐
- 常量指针和引用的实践
- 系统架构-性能篇章1(应用系统性能1)
- 第一
- 使用Qt创建模拟时钟
- 系统架构-性能篇章1(应用系统性能2-OOM&参数配置)
- Unity-AssetBundle爬坑记
- 敏捷测试工程师的十条法则
- python urllib2使用小记
- Mysql安装
- ridge regression
- 系统架构-性能篇章2(系统拆分1)
- CommonHelper 公共类
- 苹果Instruments/Shark性能调试工具概述
- Android自定义下拉刷新(附源码)
- POJ 2349 Arctic Network
- AWS ubuntu14.04实例上进行condor8.4.3 集群内配置
- AWS ubuntu14.04实例上进行condor8.4.3 集群内配置
- MongoDB 官方文档
- Spring架包变更org.springframework.dao.DataAccessResourceFailureException
- URL请求中NSString带中文字符的转码操作