1
razrlele 2015-07-24 23:15:31 +08:00
浮点数的相等可以判断 fabs(a - b) < 1e12
判断浮点数是否是整数的话就判断 fabs(a - (int)a) < 1e12 |
2
lzhtony 2015-07-24 23:16:24 +08:00
令eps=10e-5
然后fabs(a-b) < eps即认为a b相等 当然eps可以根据需要取值 |
6
zhicheng 2015-07-24 23:34:29 +08:00 via Android
|
7
winoros 2015-07-24 23:42:22 +08:00
const double eps = blabla; //自己根据情况设一个
int sgn(double x) { return x < -eps ? -1 : x > eps; } x-y的大小根据sgn(x - y)来看 |
8
husinhu 2015-07-25 10:37:36 +08:00 via iPhone
你可以去看看softfloat.c的实现
|
9
zodiac1111 2015-07-25 11:52:13 +08:00
|
10
zodiac1111 2015-07-25 11:56:49 +08:00
试下这几个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-07-25 17:22:08 +08:00
正确的做法是:
#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 这些都是标准库的做法。 |