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

背景介绍

今晚在刷杭电OJ1009题的时候,在自己写的比较函数里需要比较两个浮点数的大小,因为我记得浮点数不能直接像整数一样判断他们是否相等,以前在写判断函数的时候,也遇到过比较两个浮点数的方法,但是当时具体怎么解决的忘记了(郁闷了),今晚重新查阅了一些资料,这里简单整理一下。

正文:

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

对于两个浮点数比较只能通过相减并与预先设定的精度比较,记得要取绝对值!
  1. if( fabs(f1-f2) < 预先指定的精度)  
  1. {  
  1.       ...  
  1. }  
Example:
  1. #define EPSILON 0.000001 //根据精度需要  
  1. if ( fabs( fa - fb) < EPSILON )  
  1. {  
  1. printf("fa);  
  1. }  
原理介绍
fabs函数与abs函数
数学函数:fabs
原型:extern float fabs(float x);
  用法:#include
  功能:求浮点数x的绝对值
  说明:计算|x|, 当x不为负时返回x,否则返回-x
  Example:
  1. // fabs.c  
  1.   #include   
  1.   #include   
  1.   int main() {  
  1.     float x;  
  1.     clrscr();        // clear screen  
  1.     textmode(0x00);  // 6 lines per LCD screen  
  1.     x=-74.12;  
  1.     printf("|%f|=%f\n",x,fabs(x));  
  1.     x=0;  
  1.     printf("|%f|=%f\n",x,fabs(x));  
  1.     x=74.12;  
  1.     printf("|%f|=%f\n",x,fabs(x));
  1.     getchar();  
  1.     return 0;  
  1.   } 
注意:abs函数是针对整数的
  1. #include   
  1. #include   
  1. int main()
  2. {  
  1.  int x=-10;  
  1.  printf("%d",abs(x));  

你可能感兴趣的:(02,C语言编程)