我不确定如何解决这个问题。
我知道IEEE 754无法代表的最小整数是2^(mantissa+1) + 1
,但是我将如何获取该信息并将其更改为偶数呢?
我曾考虑过要使尾数位最大化,然后按比例缩放2倍,但这是正确的吗?
最佳答案
仅将2添加到2 ** (num_mantissa_bits)
是不够的,因为尾数的最后一位将完全代表您添加的两位。
相反,计算2 ** (num_mantissa_bits + 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'
关于floating-point - 第一个(最小)偶数不能用IEEE 754浮点表示吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33600517/