1
razrlele 2015 年 7 月 24 日
浮点数的相等可以判断 fabs(a - b) < 1e12
判断浮点数是否是整数的话就判断 fabs(a - (int)a) < 1e12 |
2
lzhtony 2015 年 7 月 24 日
令eps=10e-5
然后fabs(a-b) < eps即认为a b相等 当然eps可以根据需要取值 |
6
zhicheng 2015 年 7 月 24 日 via Android
|
7
winoros 2015 年 7 月 24 日
const double eps = blabla; //自己根据情况设一个
int sgn(double x) { return x < -eps ? -1 : x > eps; } x-y的大小根据sgn(x - y)来看 |
8
husinhu 2015 年 7 月 25 日 via iPhone
你可以去看看softfloat.c的实现
|
9
zodiac1111 2015 年 7 月 25 日
|
10
zodiac1111 2015 年 7 月 25 日
试下这几个case
float f1=0.0/0.0 float f2=1.0/0.0 float f3=-1.0/0.0 ? f1==f1 ? f1+1.0==f1 ? f2+f2>f2 |
11
JamesRuan 2015 年 7 月 25 日
正确的做法是:
#include<float.h> float f1,f2; ... ... if (((f1 - FLT_EPSILON) < f2) && ((f1 + FLT_EPSILON) > f2)) // equal 或者 #include<math.h> if(fabsf(f1-f2) < FLT_EPSILON) 同理,比较double,用DBL_EPSILON,long double用LDBL_EPSILON 这些都是标准库的做法。 |