我想写下面的程序:我想扫描三角形的三条边的长度(在浮动中)。然后我想再次扫描第二个三角形的三条边。下一步是找出这两个三角形是否相似。这意味着如果第一个三角形中的一条边与第二个三角形中的同一条边的比率等于第一个三角形中第二条边的比率,第二个三角形中的第二个边的大小与第三个三角形的大小相同,那么这些三角形是相似的。
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,以便创建可接受的偏差,并使程序能够处理这些数字?
发布于 2019-10-28 04:54:30
可能是这样的:
#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");
...
}https://stackoverflow.com/questions/58583217
复制相似问题