您的位置:首页 > 编程语言 > C语言/C++

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

2013-05-08 22:09 459 查看
今天在面试中碰到这个问题,当时还迷糊了一番,毕竟平时没怎么用过,记得以前看过,现在有点记不清了!这是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));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: