背景介绍
今晚在刷杭电OJ1009题的时候,在自己写的比较函数里需要比较两个浮点数的大小,因为我记得浮点数不能直接像整数一样判断他们是否相等,以前在写判断函数的时候,也遇到过比较两个浮点数的方法,但是当时具体怎么解决的忘记了(郁闷了),今晚重新查阅了一些资料,这里简单整理一下。
正文:
对两个浮点数判断大小和是否相等不能直接用==来判断,会出错!明明相等的两个数比较反而是不相等!
对于两个浮点数比较只能通过相减并与预先设定的精度比较,记得要取绝对值!- 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
Example:
- // fabs.c
- #include <syslib.h>
- #include <math.h>
- int 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;
- }
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int x=-10;
- printf("%d",abs(x));
- }