找到比Java

时间:2018-04-30 16:38:08

标签: java floating-point

是否有内置方法可以在Java中找到下一个最大的双号?

编写测试时,我有时希望验证x的操作是否成功,但是对于大于x的值则失败。一种方法是显示x + eps的操作失败。但必须考虑eps的价值来选择x,以避免180 + 1e-15 == 180等问题。

要自动选择eps,我想找到大于x的最小可表示数字。我很惊讶我没有找到标准的库方法,所以我写了以下内容:

public static double nextDouble(double d) {
    if (d < 0) {
        return -prevDouble(Math.abs(d));
    } else {
        return Double.longBitsToDouble(Double.doubleToLongBits(d) + 1);
    }
}

public static double prevDouble(double d) {
    if (d < 0) {
        return -nextDouble(-d);
    } else {
        return Double.longBitsToDouble(Double.doubleToLongBits(d) - 1);
    }
}

我应该使用这些自定义功能,还是有可用的内置方法?

1 个答案:

答案 0 :(得分:7)

the Math.nextUp method

  

返回正无穷大方向上与d相邻的浮点值。

doublefloat重载。还有相应的Math.nextDown方法。