首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用DBL_EPSILON比较两个浮点数的比例?

如何用DBL_EPSILON比较两个浮点数的比例?
EN

Stack Overflow用户
提问于 2019-10-28 04:46:02
回答 1查看 29关注 0票数 0

我想写下面的程序:我想扫描三角形的三条边的长度(在浮动中)。然后我想再次扫描第二个三角形的三条边。下一步是找出这两个三角形是否相似。这意味着如果第一个三角形中的一条边与第二个三角形中的同一条边的比率等于第一个三角形中第二条边的比率,第二个三角形中的第二个边的大小与第三个三角形的大小相同,那么这些三角形是相似的。

代码语言:javascript
复制
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,以便创建可接受的偏差,并使程序能够处理这些数字?

EN

回答 1

Stack Overflow用户

发布于 2019-10-28 04:54:30

可能是这样的:

代码语言:javascript
复制
#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");    
    ...
}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58583217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档