双重比较并不完全正常

时间:2017-08-05 07:27:46

标签: c double precision

我有一些代码可以简化为:

double x;
double y;
double z;
.
.

while (x + y != z)
    do stuff;

问题是x + y非常接近z但是在我的代码中某处它会失去精度,因此x + y有点偏离。我尝试过这样的事情:

while (x + y + 0.0001 > z && x + y - 0.0001 < z)但我想做更一般的事情。有没有这样的符号/功能:

while (x + y != nextdouble(z) && x + y != prevdouble(z) && x + y != z)

其中nextdouble()会给出比参数更大的可能双倍。

0 个答案:

没有答案