我想创建Double
,其值最接近,但大于Float.MAX_VALUE
。
我刚刚写了一个与此类似的问题,但对于Double
和Long.MAX_VALUE
,请参阅here。
如何使用标准Java 6 API重复Double
和Float.MAX_VALUE
的转换?
我的尝试如下,但似乎不正确:
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.
}
真诚的谢谢。
答案 0 :(得分:5)
Double val = (double)Float.MAX_VALUE;
val += Math.ulp(val);
这也可能有效(纠正你的例子),但不完全确定:
Double val = Double.longBitsToDouble(Double.doubleToLongBits(Float.MAX_VALUE)+1);
答案 1 :(得分:3)
Math.nextUp((double) Float.MAX_VALUE);
它不仅仅相当于最有效的解决方案,而且......它使你应该期待的结果非常明显。