Java 6 – 创建并检测Float.MAX_VALUE之上的第一个Double值
我想创建Double
其值最接近但大于Float.MAX_VALUE
。
我刚刚写了一个与此类似的问题但是对于Double
和Long.MAX_VALUE
,请看这里 。
如何使用标准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) { // 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);