decimals - python truncate float
binary16 en Python (3)
Puedes hacerlo más o menos como si lo hicieras en C, es decir, creo, más o menos así ...
def tofloat(b16):
sign = -1 if b16 & 0x8000 else +1
expo = ( b16 & 0x7C00 ) >> 10
prec = b16 & 0x03FF
if expo == 0:
return sign * (2.0 ** -24) * prec
elif expo == 0x1F:
return sign * float(''inf'')
prec |= 0x0400
return sign * (2.0 ** (expo - 25)) * prec
El módulo struct
es útil cuando intenta convertir datos hacia y desde formatos binarios. Sin embargo, recientemente encontré una especificación de formato de archivo que usa el formato binario16 de coma flotante . Revisé la documentación de Python, pero no puedo encontrar nada que pueda convertir ay desde ella. ¿Cuál sería la mejor manera de convertir estos datos a / de las carrozas de Python?
La publicación de blog de este tipo brinda una implementación en ambos y Python. Él usa el módulo struct
, luego lo decodifica manualmente. No es tan complicado una conversión.
binary16
una búsqueda rápida en Google http://packages.python.org/bigfloat/ que dice que tiene un contexto para la manipulación de binary16
coma flotante. Aunque no estoy familiarizado con el paquete, así que no puedo decirle nada sobre cómo usarlo (al menos, nada más de lo que puede leer en la documentación).