1

我想创建Double其值最接近但大于的值Float.MAX_VALUE

我刚刚写了一个与此类似的问题,但是对于Doubleand Long.MAX_VALUE,请参见此处

如何重复转换DoubleFloat.MAX_VALUE使用标准 Java 6 API?

我的尝试如下,但似乎不正确:

Long longValue = Long.valueOf(Float.floatToIntBits(Float.MAX_VALUE));
Double value = Double.longBitsToDouble(Double.doubleToLongBits(longValue)+1);

if (value < -Float.MAX_VALUE || value > Float.MAX_VALUE) {
    // Code here should execute but does not.
}

真诚的感谢。

4

2 回答 2

5
Double val = (double)Float.MAX_VALUE;
val += Math.ulp(val);

这也可能有效(更正您的示例),但不完全确定:

Double val = Double.longBitsToDouble(Double.doubleToLongBits(Float.MAX_VALUE)+1);
于 2012-09-10T17:50:38.763 回答
3
Math.nextUp((double) Float.MAX_VALUE);

它不仅等同于最有效的解决方案,而且......它使您应该期待什么结果变得非常明显。

于 2012-09-10T19:43:05.027 回答