C语言中比较两个浮点数是否相等的方法,fabs和abs

今天在面试中碰到这个问题,当时还迷糊了一番,毕竟平时没怎么用过,记得以前看过,现在有点记不清了!这是C语言很基础的东西,面试一般会遇到!

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

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

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 <syslib.h>
      #include <math.h>

      main()
      {
        float x;
        
        clrscr();        // clear screen
        textmode(0x00);  // 6 lines per LCD screen
        
        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;
      }

abs函数是针对整数的
#include <stdio.h>
#include <math.h>
int main()
{
 int x=-10;
 printf("%d",abs(x));
}


  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值