我的一个函数返回了一个double
,我想用诸如DBL_MIN
,DBL_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;
}
我知道,通常不应该等于比较双精度值,因为可能会产生舍入误差等,但是在这种情况下,它是一个常数(我认为)。
答案 0 :(得分:0)
就比较本身而言,这应该没问题。
您可能会错过这种优化方法,因为结果的范围不仅是真实值-但这不应该是一个大问题。
建议您是否仍然可以更改界面:更具可读性的解决方案可能是:
double result;
int err = foo_fail(&result);