# Python: How to Convert a Float to Binary (2 Ways)

Updated: June 3, 2023 By: Khue Post a comment

This concise article shows you 2 different ways to convert a float to binary in Python (both of these methods only use built-in features of Python and donâ€™t require any third-party libraries).

Table Of Contents

## Using the struct module

This approach is a two-step process:

1. Pack the float as a binary string by using the `struct.pack()` function.
2. Use the format() function and list comprehension to convert each byte to binary, then join them together.

Code example:

``````import struct

# your float number
number = 2023.12345

# pack the float as a binary string
s = struct.pack('!f', number)

# convert each byte to binary and join them
b = ''.join(format(c, '08b') for c in s)

print(b)``````

Output:

``01000100111111001110001111110011``

If you have to complete this task many times in the future, you can define a function like this:

``````def float_to_binary(input: float) -> str:
return ''.join(format(c, '08b') for c in struct.pack('!f', input))``````

## Using the decimal module

The steps are:

1. Use the `decimal` module to convert your float to a decimal object with fixed precision.
2. Multiply the decimal object by a power of 2 to get an integer.
3. Convert the result to binary by calling the `bin()` function.

Example:

``````from decimal import Decimal, getcontext

my_float = 2023.12345

# set the precision to 24 bits
getcontext().prec = 24

# convert the float to a decimal object
d = Decimal(my_float)

# multiply by 2^23 and convert to integer
i = int(d * (1 << 23))

# convert to binary
b = bin(i)

print(b)``````

Output:

``0b1111110011100011111100110100110101``

You can also define a function for reusability:

``````def float_to_binary(input: float) -> str:
getcontext().prec = 24
d = Decimal(input)
i = int(d * (1 << 23))
return bin(i)``````

This tutorial ends here. As said earlier, it is super concise. Happy coding & have a nice day!

Search tutorials, examples, and resources