Search code examples
pythonnumpyfloating-pointprecisionieee-754

Decimal to binary Half-Precision IEEE 754 in Python


I was only able to convert a decimal into a binary single-precision IEEE754, using the struct.pack module, or do the opposite (float16 or float32) using numpy.frombuffer

Is it possible to convert a decimal to a binary half precision floating point, using Numpy?

I need to print the result of the conversion, so if I type "117.0", it should print "0101011101010000"


Solution

  • if I type "117.0", it should print "0101011101010000"

    >>> import numpy as np
    >>> bin(np.float16(117.0).view('H'))[2:].zfill(16)
    '0101011101010000'
    

    .view('H') reinterprets the memory occupied by the float16 value as an unsigned integer.