如何判断浮点数是否相等

对两个浮点数判断大小和是否相等不能直接用==来判断,会出错!明明相等的两个数比较反而是不相等!

对于两个浮点数比较只能通过相减并与预先设定的精度比较,记得要取绝对值

if (fabs(f1 - f2) < 预先指定的精度)
{
    ...
}

例子:

#define EPSILON 0.000001 //根据精度需要  
if (fabs(fa - fb) < EPSILON)
{
    printf("fa<fb\n");
}

fabs函数与abs函数

数学函数:fabs()
原型:extern float fabs(float x);
用法:#include <math.h>
功能:求浮点数x的绝对值
说明:计算|x|, 当x不为负时返回x,否则返回-x

举例:

// fabs.c  
#include <stdio.h>  
#include <math.h>  

int main()
{
    float x;
    x = -74.12;
    printf("|%f|=%f\n", x, fabs(x));
    x = 0;
    printf("|%f|=%f\n", x, fabs(x));
    x = 74.12;
    printf("|%f|=%f\n", x, fabs(x));

    getchar();
    return 0;
}

输出:|-74.120003| = 74.120003

          |0.000000| = 0.000000

          |74.120003| = 74.120003

abs()求整数的绝对值:

#include <stdio.h>  
#include <math.h>  
int main()
{
    int x = -10;
    printf("%d", abs(x));
    return 0;
}
输出:10


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值