浮点数陷阱
来源:互联网 发布:淘宝联盟怎么合并购买 编辑:程序博客网 时间:2024/06/08 15:37
浮点数是个极其容易犯错误的点!
如下面这个代码:
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int main(){ double i; //scanf("%d",&n); for(i=0;i!=10;i+=0.1) { printf("%.1lf\n",i); } return 0;}
运行之后就是死循环!因为c语言中double类型数据计算是有误差的,也就是说你每次加0.1,可能永远得不到整10,有可能是0.900001。
方法就是把for循环中的i!=10改成i<10或i<=10,浮点数计算时一定不能让它们相等!这样程序就会从0.0开始输出直到10.0为止。浮点数无法精确表示大多数数字,很多只是个四舍五入的约数。
阅读全文
0 0
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数的陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数陷阱
- 浮点数的陷阱
- 浮点数陷阱
- cocos2d-x 源码分析 之 CCTableView源码分析(附使用方法讨论)
- 《程序员的修炼之道》笔记——2、软件的熵
- muduo源码学习(8)-ThreadPool
- Bad Cowtractors(Kruskal)
- 最大值减去最小值小于等于num的子数组数量
- 浮点数陷阱
- filter详解
- Rhino| Rhino详细介绍与实战
- maven 中的快照版本的讲解(SNAPSHOT)
- Java实现汉诺塔 -- JAVA 算法学习
- elasticsearch之Document APIs【Reindex API】
- su、sudo、sudo su、sudo -i的用法和区别
- 大数据Spark企业级实战版【学习笔记】----Tachyon& BlinkDB&Akka
- OpenSSL 与 SSL 数字证书概念贴