爪哇6 - 创建并检测上述Float.MAX_VALUE第一双值(Java 6 - Creatin

2019-09-22 07:12发布

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

我只是写一个类似的问题,但对于DoubleLong.MAX_VALUE ,看这里 。

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

我尝试低于,但不正确,看来:

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.
}

真诚的感谢。

Answer 1:

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

这不是只相当于最有效的解决方案,但...这使得它很明显你应该期望什么样的结果。



Answer 2:

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

这或许也可以使用(例如你的校正),但不能完全肯定:

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


文章来源: Java 6 - Creating and detecting the first Double value above Float.MAX_VALUE