Преобразование целого числа в одинарную точность в python
Я не могу понять, как преобразовать целое число с одинарной точностью, используя python, я уже пытался использовать numpy, но функция float32() не помогает.
пример 984761996 -> 1.360135E-3
1 ответ
Это код, который я написал:
import math
n = 984761996
size = 32
IEEE754 = {16: [5,15],32: [8,127],64: [11,1023],80: [15,16383],128: [15,16383]}
b = bin(n)
b = b[2:].zfill(size)
signal = b[0]
exponent = b[1:IEEE754[size][0]+1]
fraction = b[IEEE754[size][0]+1:]
i=-1
fraction_ten = 0
for c in fraction:
fraction_ten = fraction_ten + int(c)*math.pow(2,i)
i = i - 1
n_ten = math.pow(-1,int(signal)) * (1 + fraction_ten) * math.pow(2,(int(exponent,2)-IEEE754[size][1]))
print "%.6E" % n_ten