是否有内置方法可以在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);
}
}
我应该使用这些自定义功能,还是有可用的内置方法?
答案 0 :(得分:7)