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

标签 java floating-point double

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

我刚刚写了一个与此类似的问题,但对于 DoubleLong.MAX_VALUE,请参阅 here .

如何使用标准 Java 6 API 重复 DoubleFloat.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.
}

真诚的感谢。

最佳答案

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

这也可能有效(更正您的示例),但不完全确定:

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

关于Java 6 - 创建并检测第一个高于 Float.MAX_VALUE 的 Double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356793/

相关文章:

java - 利息计算器单利计算中的截断错误(涉及DecimalFormat)

java - int 和 double 除以 double java

java - 如何使用流在比赛结束后找到一件元素?

ios - Interface Builder 以小增量降级 Storyboard、调整大小和重新定位 View

matlab - 小负数四舍五入后保持符号

ios - 如何计算iOS中 float 后的位数?

c - 为什么 `double i = 3.3, j = 1.1; int k = i/j; printf("%d\n", k);` 得到 2?

java - 使用 SpringBoot-App 作为 Ubuntu 18.04 服务运行 Tomcat 9

java - 是否可以在 android firebase 上仅显示特定用户 ID 的数据?

java - 如何在 Hibernate 中使用 TomEE