Convert Decimal fraction to binary in Python

In this tutorial, we will show you how to convert decimal fraction to binary in Python.

Note:

  • Here, we are going to convert a decimal number into its equivalent binary number up to k-precisions(number of digits after the decimal point).
  • k will be given by the user as an input in addition to the decimal number.

Python Program to Convert Decimal fraction to binary

This program contains 3 parts.

  1. Converting an integral part of decimal to binary equivalent.
  2. Converting the fraction part of decimal to binary equivalent.
  3. Combining both the integral and fraction part of the binary number.

Algorithm:

1. Converting an integral part of decimal to the binary equivalent

  1. Divide the integer by 2 and keep track of the remainder.
  2. Divide the quotient by 2 until you get quotient as zero.
  3. Finally, stored remainders are reversed to get the equivalent binary number.

2. Converting the fraction part of decimal to the binary equivalent

  1.  Multiply the fraction part of the decimal number by 2.
  2. Store the integer part of the resultant decimal number.
  3.  Repeat step 1 and step 2 for k(precisions after decimal point) times.

3. Then combine both the integral and fraction part of the binary.

Now, we have a look at the implementation of the above algorithm.

def decToBinConversion(no, precision): 
    binary = ""  
    IntegralPart = int(no)  
    fractionalPart = no- IntegralPart
    #to convert an integral part to binary equivalent
    while (IntegralPart):
        re = IntegralPart % 2 
        binary += str(re)  
        IntegralPart //= 2
    binary = binary[ : : -1]    
    binary += '.'
    #to convert an fractional part to binary equivalent
    while (precision):
        fractionalPart *= 2
        bit = int(fractionalPart)
        if (bit == 1) :   
            fractionalPart -= bit  
            binary += '1'
        else : 
            binary += '0'
        precision -= 1
    return binary  
no = float(input())
k = int(input())
print("Binary Equivalent:",decToBinConversion(no,k))

Sample output 1:

38.67
3
Binary Equivalent: 100110.101

Sample output 2:

8.45
2
Binary Equivalent: 1000.01

I hope that this tutorial has taught you something useful.

Leave a Reply

Your email address will not be published. Required fields are marked *