Floating point 第一个(最小)偶数不能用IEEE 754浮点表示?

Floating point 第一个(最小)偶数不能用IEEE 754浮点表示?,floating-point,precision,ieee-754,Floating Point,Precision,Ieee 754,我不知道如何解决这个问题 我知道IEEE 754无法表示的最小整数是2^(尾数+1)+1,但我如何获取该信息并将其更改为偶数 我曾考虑过将尾数位最大化,然后按2的因子进行缩放,但这是否正确?仅将2添加到2**(num\u尾数位)是不够的,因为尾数中的最后一位正好代表您添加的两位 相反,计算2**(num\u尾数\u位+1)+2 下面是一个Python会话,它使所有位都可见: >>> (2.0 ** 53).hex() '0x1.0000000000000p+53' >&g

我不知道如何解决这个问题

我知道IEEE 754无法表示的最小整数是
2^(尾数+1)+1
,但我如何获取该信息并将其更改为偶数


我曾考虑过将尾数位最大化,然后按2的因子进行缩放,但这是否正确?

仅将2添加到
2**(num\u尾数位)
是不够的,因为尾数中的最后一位正好代表您添加的两位

相反,计算
2**(num\u尾数\u位+1)+2

下面是一个Python会话,它使所有位都可见:

>>> (2.0 ** 53).hex()
'0x1.0000000000000p+53'
>>> (2.0 ** 53 + 2.0).hex()
'0x1.0000000000001p+53'
>>> (2.0 ** 54).hex()
'0x1.0000000000000p+54'
>>> (2.0 ** 54 + 2.0).hex()
'0x1.0000000000000p+54'

我想你的意思可能是2**尾数位数+1?对于偶数,您获得一个二进制码,因此2**(尾数位数+1)+2。@njuffa那么这是最小的偶数?这对我来说完全有道理,但出于某种原因,我们的cs课程有2^(尾数+2)+2,知道为什么吗?或者这是一个打字错误?那么,你是如何计算尾数的位数的呢?您是仅计算IEEE-754编码中的位,还是计算尾数位的有效数量,即编码(分数)位加上隐式(隐藏)整数位?仅计算尾数位的数量,这就是为什么它让我困惑@njuffa@ylun.ca如果只计算IEEE-754格式中使用隐式整数位编码的尾数位数,则无法精确表示的最小整数为2**(尾数位数+1)+1。根据课程材料的说明,无法精确表示的最小偶数整数为2**(尾数位数+2)+2。通过查看每个二进制编码中编码数字之间的最小间距,您可以轻松地为自己澄清这一点。也可以使用IEEE-754单精度操作数检查暴力。