提问人:yaugenka 提问时间:7/30/2023 最后编辑:user207421yaugenka 更新时间:7/30/2023 访问量:47
Java Float 最大精确值
Java Float max precise value
问:
Java 是 .同时尾数是 24 位(有一个额外的隐藏位),可以容纳最大值。它如何能够存储大于后者的值而不丢失不太重要的数字?Float.MAX_VALUE
3.4028235E38
16777215
下面是一个 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
答:
2赞
Hoopje
7/30/2023
#1
事实上,这是不可能的。它确实“失去了不太重要的数字”。第二大 Java 浮点值不是 ,而是少得多。Float.MAX_VALUE - 1
评论
Math.ulp(
) 方法(或者,在同一个 Javadoc 上,和 ) - 或者一些更理论的,每个计算机科学家都应该知道的关于浮点算术的知识nextDown()
nextUp()
16777217f
1.6777216E7