float浮点数类型误差的解决方法


首先要知道浮点数是存在误差的

例如:

    float f = 1;
    float sum = 0;
    for(int i=0; i<4000000; i++)
    {
        sum += f;
    }
    cout<<sum<<endl;


输出结果是:9998.56


这是因为计算机保存浮点数的精度有限造成的,那我们应该如何较好地避免浮点误差呢?

其实只有在判断两个浮点数是否相等时才会较经常出现这种浮点错误

解决方法:

bool equal(double a,double b){
    return fabs(a-b)<0.000001;
}


只要两个浮点数的差很小就可以判断它们是相等了。


————————————————
原文链接:https://blog.csdn.net/weixin_37609825/article/details/79810018

猜你喜欢

转载自blog.csdn.net/weixin_42565127/article/details/130888224