# Convert Binary fraction to Decimal

• Difficulty Level : Medium
• Last Updated : 14 May, 2021

Given an string of binary number n. Convert binary fractional n into it’s decimal equivalent.

Examples:

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

```Input: n = 110.101
Output: 6.625

Input: n = 101.1101
Output: 5.8125```
We strongly recommend that you click here and practice it, before moving on to the solution.

Following are the steps of converting binary fractional to decimal.

A) Convert the integral part of binary to decimal equivalent

1. Multiply each digit separately from left side of radix point till the first digit by 20, 21, 22,… respectively.
2. Add all the result coming from step 1.
3. Equivalent integral decimal number would be the result obtained in step 2.

B) Convert the fractional part of binary to decimal equivalent

1. Divide each digit from right side of radix point till the end by 21, 22, 23, … respectively.
2. Add all the result coming from step 1.
3. 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++

 `// C++ program to demonstrate above steps of``// binary fractional to decimal conversion``#include``using` `namespace` `std;` `// Function to convert binary fractional to``// decimal``double` `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 code``int` `main()``{``    ``string n = ``"110.101"``;``    ``cout << binaryToDecimal(n, n.length()) << ``"\n"``;` `    ``n = ``"101.1101"``;``    ``cout << binaryToDecimal(n, n.length());` `    ``return` `0;``}`

## Java

 `// Java program to demonstrate above steps of``// binary fractional to decimal conversion``import` `java.io.*;` `class` `GFG{` `// Function to convert binary fractional to``// decimal``static` `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 Code``public` `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

 `# Python3 program to demonstrate above steps``# of binary fractional to decimal conversion` `# Function to convert binary fractional ``# to decimal``def` `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#

 `// C# program to demonstrate above steps of``// binary fractional to decimal conversion``using` `System;``  ` `class` `GFG{``  ` `// Function to convert binary fractional to``// decimal``static` `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 Code``public` `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`

## Javascript

 ``

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.

My Personal Notes arrow_drop_up