浮点数比较

NOTE: 以下内容取自 胡凡 曾磊《算法笔记》
经过大量计算,3.14可能存储为3.1400000000001,也有可能存储为3.1499999999999,所以导致两个数不相等。于是需要引入一个极小数eps对误差进行修正。经验表明10^-8比较合适。

1、==运算符

所以一个数a如果位于[b-eps , b+eps]之间,就认为a==b成立

#include<stdio.h>
const double eps=1e-8;
#define Equ(a,b) (fabs((a)-(b))<(eps))
int main()
{
    double db=1.23;
    if (Equ(db,1.23))
    {
        printf("true\n");
    }
    else{
        printf("false\n");
    }
    return 0;
}

2、大于运算符(>)

#define More(a,b) (((a)-(b))>(eps))

3、小于运算符(<)

#define Less(a,b) (((a)-(b))<(eps))

4、大于等于运算符(<=)

#define MoreEqu(a,b) (((a)-(b))>(-eps))

5、小于等于运算符(<=)

#define MoreEqu(a,b) (((a)-(b))<(-eps))

6、圆周率π

const double Pi =acos(-1.0);

猜你喜欢

转载自blog.csdn.net/wo164683812/article/details/79234026