如何判断两个浮点数(float类型)是否相等?(转)
今天在面试中碰到这个问题,当时还迷糊了一番,毕竟平时没怎么用过,记得以前看过,现在有点记不清了!这是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));
 - }
 
版权声明:本文为博主原创文章,未经博主允许不得转载。
                    
                
                
            
        
浙公网安备 33010602011771号