Более быстрое преобразование с плавающей точкой в ​​int в Python - PullRequest
2 голосов
/ 23 марта 2010

Вот фрагмент кода, который занимает большую часть времени в моей программе, согласно статистике 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 Ответ

4 голосов
/ 23 марта 2010

Вы пробовали очевидное?

def floatToInt(x):
    return int((x+1.0) * (2**31))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...