Java Float 最大精确值

Java Float max precise value

提问人:yaugenka 提问时间:7/30/2023 最后编辑:user207421yaugenka 更新时间:7/30/2023 访问量:47

问:

Java 是 .同时尾数是 24 位(有一个额外的隐藏位),可以容纳最大值。它如何能够存储大于后者的值而不丢失不太重要的数字?Float.MAX_VALUE3.4028235E3816777215

下面是一个 kotlin playground 示例

fun main() {
    val m = Float.MAX_VALUE
    val j = 16777215f
    val n = 1
    val k = j + n
    println(m)
    println(j)
    println(k)
}

3.4028235E38
1.6777215E7
1.6777216E7
Java 浮点

评论

1赞 user16320675 7/30/2023
也许你有兴趣阅读有关 Math.ulp() 方法(或者,在同一个 Javadoc 上,和 ) - 或者一些更理论的,每个计算机科学家都应该知道的关于浮点算术的知识nextDown()nextUp()
0赞 yaugenka 7/30/2023
看起来算术是在没有执行数学运算时在播放事件中:试图清除一个有值的变量并被打印出来。16777217f1.6777216E7

答:

2赞 Hoopje 7/30/2023 #1

事实上,这是不可能的。它确实“失去了不太重要的数字”。第二大 Java 浮点值不是 ,而是少得多。Float.MAX_VALUE - 1