gpt4 book ai didi

Java float 说明

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:57 26 4
gpt4 key购买 nike

我正在阅读 Joshua Bloch 的Java 益智游戏。在拼图 28 中,我无法理解以下段落-

This works because the larger a floating-point value, the larger the distance between the value and its successor. This distribution of floating-point values is a consequence of their representation with a fixed number of significant bits. Adding 1 to a floating-point value that is sufficiently large will not change the value, because it doesn't "bridge the gap" to its successor.

  1. 为什么 float 越大,其值与后继值之间的距离就越大?
  2. 如果是Integer,我们加一得到下一个Integer,但是如果是float,我们如何得到下一个 float 值?如果我有 IEEE-754 格式的浮点值,我是否将尾数部分加 1 以获得下一个 float ?

最佳答案

想象一个基于十进制的格式,您只能设置前 5 个值(即您的尾数长度为 5)。对于小数字你会没事的:1.0000,12.000,125.00

但是对于更大的数字,您将不得不开始截断,例如 1113500。下一个可表示的数字是 1113600,它大了 100。介于两者之间的任何值都不能用这种格式表示。如果您正在读取此范围内的值,则必须截断它 - 找到最接近匹配的表示,即使它不准确。

数字越大,问题越严重。如果我达到 34567800000,那么下一个可表示的数字将是 34567900000,即 1000000 或 100 万的差距。这样,您可以看到表示之间的差异取决于大小。

在另一个极端,对于小值 0.0001,下一个可表示值是 0.0002,因此差距仅为 0.0001。

浮点值具有相同的原理,但使用二进制编码(2 的幂而不是 10 的幂)。

关于Java float 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18109463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com