gpt4 book ai didi

c++ - 比较 float 的正确方法

转载 作者:行者123 更新时间:2023-11-30 18:30:58 24 4
gpt4 key购买 nike

我正在计算 N + fraction 形式的实数值。例如,N + fraction = 7.10987623 ,然后N = 7fraction = 0.10987623接下来,我需要检查是否 fraction大于或等于比率23269/25920

以下 C/C++ 语言似乎给出了正确的结果;但是,我不确定这是否是进行比较的正确方法:

// EPSILON is defined to be the error tolerance
// and `ratio' is defined as 23269.0/25920.0
if(fabs(fraction - ratio) > EPSILON)
// `fraction' is greater or equal to `ratio'

我也尝试过其他方法,但似乎给出了错误的结果。

if(fabs(fraction - ratio) < EPSILON)

最佳答案

您有比较平等的正确方法:

fabs(fraction - ratio) < EPSILON

它围绕宽度EPSILON比率建立了一个相等带。任何高于该范围的值都严格来说更大。因此,> 检查是:

fraction > ratio + EPSILON

因为我们想要 >=,所以我们只需要这两个部分的并集:

fraction > ratio - EPSILON

关于c++ - 比较 float 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27636780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com