相等比较DBL_MIN或DBL_MAX是否安全?

时间:2018-09-03 00:43:43

标签: c

我的一个函数返回了一个double,我想用诸如DBL_MINDBL_MAX-DBL_MAX之类的无效值来指示错误情况。 / p>

#include <stdio.h>
#include <stdlib.h>
#include <float.h>

double foo_fail(void)
{
    /* some code that could fail */
    return DBL_MIN;
}

int main(void)
{
    double d = foo_fail();
    /* Is this comparison in any way safe, defined, portable? */
    if (d == DBL_MIN)
        puts("foo failed");

    return 0;
}

我知道,通常不应该等于比较双精度值,因为可能会产生舍入误差等,但是在这种情况下,它是一个常数(我认为)。

1 个答案:

答案 0 :(得分:0)

就比较本身而言,这应该没问题。

您可能会错过这种优化方法,因为结果的范围不仅是真实值-但这不应该是一个大问题。

建议您是否仍然可以更改界面:更具可读性的解决方案可能是:

double result;
int err = foo_fail(&result);