浮点数陷阱

来源:互联网 发布:淘宝联盟怎么合并购买 编辑:程序博客网 时间: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为止。浮点数无法精确表示大多数数字,很多只是个四舍五入的约数。

原创粉丝点击