我读到浮点/双打等式应该使用一个间隔(由一些epsilon给出):
bool aresame(double a, double b)
{
return (fabs(a-b) < EPSILON);
}
我可以使用或者我必须自己定义EPSILON的任何预定义值,例如0.0000000001
吗?
答案 0 :(得分:1)
此问题已有很多问题,但epsilon值取决于所比较的值。由于浮点数具有一定数量的准确数字,因此在1E19左右比1E-19进行比较是非常不同的。你不能使用相同的epsilon,因为准确性不够。
因此,您必须知道数字的范围并相应地确定epsilon值。
答案 1 :(得分:0)
我建议如果你做一些关于比较浮点数的更多信息,那将是一个好主意。 这是一篇很好的文章,作为我发现的一个简单例子。
Here is a link to updated article。 我相信还有更多 关于您的问题,您可以在(float.h)
中检查以下常量 FLT_EPSILON
DBL_EPSILON
LDBL_EPSILON