Convert Binary fraction to Decimal - GeeksforGeeks

14 May, 2021
Given an string of binary number n. Convert binary fractional n into it’s decimal equivalent.
Examples:
Input: n = 110.101
Output: 6.625

Input: n = 101.1101
Output: 5.8125
Following are the steps of converting binary fractional to decimal.
A) Convert the integral part of binary to decimal equivalent
Multiply each digit separately from left side of radix point till the first digit by 20, 21, 22,... respectively.Add all the result coming from step 1.Equivalent integral decimal number would be the result obtained in step 2.
Multiply each digit separately from left side of radix point till the first digit by 20, 21, 22,... respectively.
Add all the result coming from step 1.
Equivalent integral decimal number would be the result obtained in step 2.
B) Convert the fractional part of binary to decimal equivalent
Divide each digit from right side of radix point till the end by 21, 22, 23, ... respectively.Add all the result coming from step 1.Equivalent fractional decimal number would be the result obtained in step 2.
Divide each digit from right side of radix point till the end by 21, 22, 23, ... respectively.
Add all the result coming from step 1.
Equivalent fractional decimal number would be the result obtained in step 2.
C) Add both integral and fractional part of decimal number.Illustration
Let's take an example for n = 110.101

Step 1: Conversion of 110 to decimal
=> 1102 = (1*22) + (1*21) + (0*20)
=> 1102 = 4 + 2 + 0
=> 1102 = 6
So equivalent decimal of binary integral is 6.

Step 2: Conversion of .101 to decimal
=> 0.1012 = (1*1/2) + (0*1/22) + (1*1/23)
=> 0.1012 = 1*0.5 + 0*0.25 + 1*0.125
=> 0.1012 = 0.625
So equivalent decimal of binary fractional is 0.625

Step 3: Add result of step 1 and 2.
=> 6 + 0.625 = 6.625
C++
Java
Python3
C#
Javascript
// C++ program to demonstrate above steps of// binary fractional to decimal conversion#include<bits/stdc++.h>using namespace std; // Function to convert binary fractional to// decimaldouble binaryToDecimal(string binary, int len){    // Fetch the radix point    size_t point = binary.find('.');     // Update point if not found    if (point == string::npos)        point = len;     double intDecimal = 0, fracDecimal = 0, twos = 1;     // Convert integral part of binary to decimal    // equivalent    for (int i = point-1; i>=0; --i)    {        // Subtract '0' to convert character        // into integer        intDecimal += (binary[i] - '0') * twos;        twos *= 2;    }     // Convert fractional part of binary to    // decimal equivalent    twos = 2;    for (int i = point+1; i < len; ++i)    {        fracDecimal += (binary[i] - '0') / twos;        twos *= 2.0;    }     // Add both integral and fractional part    return intDecimal + fracDecimal;} // Driver codeint main(){    string n = "110.101";    cout << binaryToDecimal(n, n.length()) << "\n";     n = "101.1101";    cout << binaryToDecimal(n, n.length());     return 0;}
// Java program to demonstrate above steps of// binary fractional to decimal conversionimport java.io.*; class GFG{ // Function to convert binary fractional to// decimalstatic double binaryToDecimal(String binary,                              int len){         // Fetch the radix point    int point = binary.indexOf('.');     // Update point if not found    if (point == -1)        point = len;     double intDecimal = 0,           fracDecimal = 0,           twos = 1;     // Convert integral part of binary to decimal    // equivalent    for(int i = point - 1; i >= 0; i--)    {        intDecimal += (binary.charAt(i) - '0') * twos;        twos *= 2;    }     // Convert fractional part of binary to    // decimal equivalent    twos = 2;    for(int i = point + 1; i < len; i++)    {        fracDecimal += (binary.charAt(i) - '0') / twos;        twos *= 2.0;    }     // Add both integral and fractional part    return intDecimal + fracDecimal;} // Driver Codepublic static void main(String[] args){    String n = "110.101";    System.out.println(        binaryToDecimal(n, n.length()));     n = "101.1101";    System.out.println(        binaryToDecimal(n, n.length()));}}     // This code is contributed by dheeraj_2801
# Python3 program to demonstrate above steps# of binary fractional to decimal conversion # Function to convert binary fractional # to decimaldef binaryToDecimal(binary, length) :         # Fetch the radix point    point = binary.find('.')     # Update point if not found    if (point == -1) :        point = length     intDecimal = 0    fracDecimal = 0    twos = 1     # Convert integral part of binary    # to decimal equivalent    for i in range(point-1, -1, -1) :                 # Subtract '0' to convert        # character into integer        intDecimal += ((ord(binary[i]) -                        ord('0')) * twos)        twos *= 2     # Convert fractional part of binary    # to decimal equivalent    twos = 2         for i in range(point + 1, length):                 fracDecimal += ((ord(binary[i]) -                         ord('0')) / twos);        twos *= 2.0     # Add both integral and fractional part    ans = intDecimal + fracDecimal         return ans # Driver code :if __name__ == "__main__" :    n = "110.101"    print(binaryToDecimal(n, len(n)))         n = "101.1101"    print(binaryToDecimal(n, len(n))) # This code is contributed# by aishwarya.27
// C# program to demonstrate above steps of// binary fractional to decimal conversionusing System;   class GFG{   // Function to convert binary fractional to// decimalstatic double binaryToDecimal(string binary,                              int len){         // Fetch the radix point    int point = binary.IndexOf('.');       // Update point if not found    if (point == -1)        point = len;       double intDecimal = 0,            fracDecimal = 0,           twos = 1;       // Convert integral part of binary to decimal    // equivalent    for(int i = point - 1; i >= 0; i--)    {        intDecimal += (binary[i] - '0') * twos;        twos *= 2;    }       // Convert fractional part of binary to    // decimal equivalent    twos = 2;    for(int i = point + 1; i < len; i++)    {        fracDecimal += (binary[i] - '0') / twos;        twos *= 2.0;    }       // Add both integral and fractional part    return intDecimal + fracDecimal;}   // Driver Codepublic static void Main(string[] args){    string n = "110.101";    Console.Write(        binaryToDecimal(n, n.Length) + "\n");       n = "101.1101";    Console.Write(        binaryToDecimal(n, n.Length));}} // This code is contributed by rutvik_56
<script>      // JavaScript program to demonstrate above steps of      // binary fractional to decimal conversion      // Function to convert binary fractional to      // decimal      function binaryToDecimal(binary, len) {        // Fetch the radix point        var point = binary.indexOf(".");         // Update point if not found        if (point === -1) point = len;         var intDecimal = 0,          fracDecimal = 0,          twos = 1;         // Convert integral part of binary to decimal        // equivalent        for (var i = point - 1; i >= 0; i--) {          intDecimal += (binary[i] - "0") * twos;          twos *= 2;        }         // Convert fractional part of binary to        // decimal equivalent        twos = 2;        for (var i = point + 1; i < len; i++) {          fracDecimal += (binary[i] - "0") / twos;          twos *= 2.0;        }         // Add both integral and fractional part        return intDecimal + fracDecimal;      }       // Driver Code      var n = "110.101";      document.write(binaryToDecimal(n, n.length) + "<br>");       n = "101.1101";      document.write(binaryToDecimal(n, n.length));    </script>
Output: 
6.625
5.8125
Time complexity: O(len(n)) Auxiliary space: O(len(n)) 
Where len is the total digits contain in binary number of n.
See this: Convert decimal fraction to binary number.This article is contributed by Shubham Bansal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 
aishwarya.27
mohndar131131
dheeraj_2801
rutvik_56
khushboogoyal499
rdtank
binary-representation
Fraction
number-digits
TCS
Mathematical
Strings
TCS
Strings
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Program to find GCD or HCF of two numbers
Modulo Operator (%) in C/C++ with Examples
Prime Numbers
Program to find sum of elements in a given array
Reverse a string in Java
Write a program to reverse an array or string
Longest Common Subsequence | DP-4
Check for Balanced Brackets in an expression (well-formedness) using Stack
Python program to check if a string is palindrome or not