Floating point IEEE 754浮点数标准是否会导致浮点数的偏差分布?

Floating point IEEE 754浮点数标准是否会导致浮点数的偏差分布?,floating-point,ieee-754,Floating Point,Ieee 754,对于整数,位表示可以覆盖min\u int和max\u int之间的所有可能整数 对于浮动,这是不可能的,因为在任何范围之间,浮动的数量是无限的 我明白这一点,没问题 最小的正浮点是min\u float,因此我假设PC中的任何浮点理论上应该是k*min\u float,k是一个整数,基本上,min\u float是最小的单位我说得对吗? 下面的一条评论说 由于采用浮点表示法,因此有更多的“小” 根据标准,数字大于“大”数字 我真的不明白。为什么小数字比大数字多?IEEE 745实际上将类别浮

对于整数,位表示可以覆盖
min\u int
max\u int
之间的所有可能整数

对于浮动,这是不可能的,因为在任何范围之间,浮动的数量是无限的

我明白这一点,没问题

最小的正浮点是
min\u float
,因此我假设PC中的任何浮点理论上应该是
k*min\u float
,k是一个整数,基本上,
min\u float
是最小的单位我说得对吗?


下面的一条评论说

由于采用浮点表示法,因此有更多的“小” 根据标准,数字大于“大”数字


我真的不明白。为什么小数字比大数字多?IEEE 745实际上将类别浮动为单位,为什么它会导致这种值偏差?

评论者是正确的-可代表的小数字比大数字多

对于IEEE 754浮点数,将分数位转换为范围为1的值≤ f<2,然后将其乘以提升指数。很好。我将在这里讨论64位双精度,因为很容易坚持使用一种类型

为简单起见,假设方程为f×2e-1023,忽略如何从原始位和符号位导出f的细节。对于这个答案的其余部分,假设符号位不存在——这实际上并不重要,因为我们讨论的是值的大小,而不是与正数和负数相关的字面上的“大”或“小”

这里的重要部分是指数数据被转换为2e-1023,其中e是11位指数。e的可能原始值介于0和2047之间,这意味着指数范围为2-1023到21024

现在,由于所有分数值都在1的范围内≤ f<2,它认为必须有1024个可能的值≤对于任意选择的f值,为2;对于任意选择的f值,为1024个可能值>2

因此,计算它们相对来说是微不足道的:

  • 252×1024=4611686018427387904可能值≤ 二,
  • 252×1024=4611686018427387904可能值>2
编辑:事实上,它比我想象的还要好。。。对于f的任何固定值,有2048个可能的指数值。当指数为1023时,计算的指数(21023-1023)变为20,即1。因为f×1就是f,这意味着50%的界实际上是f,而不是2。因此,对于任何给定的f值,随机选取一个指数,得出小于或等于f的结果的概率是50%

注意,我们考虑的是值的大小,而不是文字值,所以这里不存在负数。如果你想恢复符号位,只需将每一个的计数增加一倍,因为你会有同样多的负数

现在考虑,第一个集合中的值范围仅为0到f,而第二个集合中的范围是f,以达到浮点类型可以存储的最大可能值。因此,在“小”数字范围内,可表示的数字总是要密集得多


要100%清楚:所有可表示的浮点数中有50%在-f到+f的范围内,其余的50%由所有其他数字构成。

“在任何范围之间,浮点数是无穷大的”您必须考虑实数。或者理性。或者二元。在+inf和-inf之间有有限个浮点数。好的,我知道了。尾数的可能值是固定的,介于1和2之间。E部分将按数量级增加整个值,因此E越大,它所能代表的值越少。就像在十进制中,如果我说M部分是固定的,假设唯一可能的值是1.1和1.11,那么如果我们将E部分增加1,可能的值将是11和11.1,但不是11.11;如果将E增加2,则可能的值为110和111,但不是110.1或111.1或111.11等。因此,改变E将导致更大的值。我理解正确吗?为了精确起见,你能解释一下为什么现在
,因为所有的分数值都在1范围内吗≤ f<2,它认为必须有1024个可能的值≤2对于任意选择的f值,1024个可能值>2对于任意选择的f值。
成立?@JacksonTale最大指数(两个无穷大,所有剩余位模式均为NaN)和零指数(两个零所有剩余位模式均为次正态数)的不同处理使情况变得复杂.@JacksonTale为
f
的值选择任意52位的随机集。不管他们是什么。从拾取的单个
f
值可以生成多少不同的浮点值?答案是2^12(4096),因为您还有12个剩余位:11个指数位和1个符号位。如果我们只看指数——暂时忽略符号——那就是2048个可能的值。由于计算是2^(e-1023),这就给你留下了1024个正指数值(包括零)和1024个负指数值。@JacksonTale事实上,想想看,我的断言是错误的-临界点是
f
,而不是2。这实际上使我的论点更加有力,因为
f=2
是获得一个小数字概率的“最坏情况”——任何其他
f
值都会使你获得一个小数字的概率更高。