Java 6 – 创建并检测Float.MAX_VALUE之上的第一个Double值

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

我刚刚写了一个与此类似的问题但是对于DoubleLong.MAX_VALUE ,请看这里 。

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

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

 Long longValue = Long.valueOf(Float.floatToIntBits(Float.MAX_VALUE)); Double value = Double.longBitsToDouble(Double.doubleToLongBits(longValue)+1); if (value  Float.MAX_VALUE) { // Code here should execute but does not. } 

真诚的谢谢。

 Math.nextUp((double) Float.MAX_VALUE); 

它不仅相当于最有效的解决方案,而且……它使您应该期待的结果非常明显。

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

这也可能有效(纠正你的例子),但不完全确定:

 Double val = Double.longBitsToDouble(Double.doubleToLongBits(Float.MAX_VALUE)+1);