在Python中更快地浮点到int转换

时间:2010-03-23 12:49:40

标签: python floating-point binary-data

根据timeit统计数据,这是一段在我的程序中占用大部分时间的代码。将[-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 个答案:

答案 0 :(得分:4)

你尝试过明显的吗?

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