c-如何用DBL_EPSILON比较浮点数的两个定量



我想写以下程序:我想扫描三角形的三条边的长度(以浮点形式(。然后我想再次扫描第二个三角形的三条边。接下来的事情是找出这两个三角形是否相似。这意味着,如果第一个三角形中的一条边和第二个三角形中同一条边的比率等于第一个三角形的第二条边与第二个三角中相同大小和第三个边相同大小的比率,那么三角形是相似的。

if(mid1/mid2 == min1/min2 && mid1/mid2 == max1/max2){
printf("Triangles are similar.n");    

问题是,如果我有两个尺寸为的三角形:第一个三角形(9.861 9.865 9.883(和第二个三角形(9861 9883 9865(,程序会说这两个三角形不相似。如何使用和编写DBL_EPSILON,使其产生可接受的偏差,并使程序适用于这些数字?

也许是这样的:

#define DBL_EPSILON 0.0001
int test(float a, float b) {
float c = a - b;
return DBL_EPSILON <= c && c <= DBL_EPSILON;
}
void your_func() {
...
if (test(mid1/mid2, min1/min2) && test(mid1/mid2, max1/max2))
printf("Triangles are similar.n");    
...
}

最新更新