1

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 || value > Float.MAX_VALUE) {
    // Code here should execute but does not.
}

心から感謝します。

4

2 に答える 2

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

これも機能する可能性があります(例の修正)が、完全にはわかりません:

Double val = Double.longBitsToDouble(Double.doubleToLongBits(Float.MAX_VALUE)+1);
于 2012-09-10T17:50:38.763 に答える
3
Math.nextUp((double) Float.MAX_VALUE);

これは、最も効率的なソリューションと同等であるだけでなく、どのような結果が期待できるかを明確にします。

于 2012-09-10T19:43:05.027 に答える