gpt4 book ai didi

python - 如何在 python 中获取前 n 位 float 作为整数

转载 作者:行者123 更新时间:2023-11-28 21:10:56 26 4
gpt4 key购买 nike

假设我有 0.625,因为 float 是 0b.101,所以如果我想要它的前两位作为整数,即 0b10 = 2,如何在 python 中实现?

我已经尝试将数字取为 2 的幂并转换为 int,所以如果我想要 n 位,我会做 int(0.625*(2**n)) 。但这对我不起作用。

当我的数字大于 1 时会出现问题,所以 24.548838022726972 会给我 392 而不是 12 对于前四位。 (24.548838022726972 = 0b11000.100011001...)

最佳答案

如果您想要 n 个最高有效位,一种开始的方法是使用 math.frexp将您的数字标准化到 [0.5, 1.0) 范围内。然后乘以 2**n 并取整数部分将为您提供所需的结果。

>>> import math
>>> math.frexp(24.54883) # significand and exponent
(0.7671509375, 5)
>>> math.frexp(24.54883)[0] # just the significand
0.7671509375
>>> int(math.frexp(24.54883)[0] * 2**4) # most significant 4 bits
12

您可以使用 math.ldexp 而不是显式计算 2 的幂来缩放。函数来执行操作的第二部分。

>>> int(math.ldexp(math.frexp(24.54883)[0], 4))
12

关于python - 如何在 python 中获取前 n 位 float 作为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35975212/

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