Python中更快的浮点转整型转换

2 投票
1 回答
1191 浏览
提问于 2025-04-15 20:44

这是我程序中耗时最长的一段代码,根据时间统计显示的。这个函数的作用是把范围在[-1.0, 1.0]之间的浮点数转换成无符号整数,范围是[0, 2**32]。我该怎么加快floatToInt的速度呢?

piece = []
rng = range(32)
for i in rng:
    piece.append(1.0/2**i)

def floatToInt(x):
    n = x + 1.0
    res = 0
    for i in rng:
        if n >= piece[i]:
            res += 2**(31-i)
            n -= piece[i]

    return res

1 个回答

5

你试过最简单的那个方法吗?

def floatToInt(x):
    return int((x+1.0) * (2**31))

撰写回答