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

Kom*_*ave 1 java floating-point double

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

我刚刚写与此类似,但对于问题DoubleLong.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.
}
Run Code Online (Sandbox Code Playgroud)

真诚的谢谢.

jta*_*orn 5

Double val = (double)Float.MAX_VALUE;
val += Math.ulp(val);
Run Code Online (Sandbox Code Playgroud)

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

Double val = Double.longBitsToDouble(Double.doubleToLongBits(Float.MAX_VALUE)+1);
Run Code Online (Sandbox Code Playgroud)