# Converting a Real Number (between 0 and 1) to Binary String

Given a real number between 0 and 1 (e.g., 0.72) that is passed in as a double, print the binary representation. If the number cannot be represented accurately in binary with at most 32 characters, print” ERROR:’
Examples:

```Input :  (0.625)10
Output : (0.101)2

Input : (0.72)10
Output : ERROR
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Solution: First, let’s start off by asking ourselves what a non-integer number in binary looks like. By analogy to a decimal number, the binary number 0 .1012 would look like:

0. 1012 = 1 * 1/21 + 0 *1/22 + 1 * 1/23 .

Method 1: Multiply the decimal part by 2

To print the decimal part, we can multiply by 2 and check if 2*n is greater than or equal to 1. This is essentially “shifting” the fractional sum. That is:

```r = 210 * n;
= 210 * 0.1012;
= 1 * 1/20 + 0 *1/21 + 1 * 1/22;
= 1.012;
```

If r >= 1, then we know that n had a 1 right after the decimal point. By doing this continuously, we can check every digit.

## C++

 `// C++ program to binary real number to string ` `#include ` `#include ` `using` `namespace` `std; ` ` `  `// Function to convert Binary real ` `// number to String ` `string toBinary(``double` `n) ` `{ ` `    ``// Check if the number is Between 0 to 1 or Not ` `    ``if` `(n >= 1 || n <= 0) ` `        ``return` `"ERROR"``; ` ` `  `    ``string answer; ` `    ``double` `frac = 0.5; ` `    ``answer.append(``"."``); ` ` `  `    ``// Setting a limit on length: 32 characters.          ` `    ``while` `(n > 0) ` `    ``{ ` `         `  `        ``//Setting a limit on length: 32 characters      ` `        ``if` `(answer.length() >= 32) ` `                ``return` `"ERROR"``; ` ` `  `            ``// Multiply n by 2 to check it 1 or 0 ` `            ``double` `b = n * 2; ` `            ``if` `(b >= 1) ` `            ``{ ` `                ``answer.append(``"1"``); ` `                ``n = b - 1; ` `            ``} ` `            ``else` `            ``{ ` `                ``answer.append(``"0"``); ` `                ``n = b; ` `            ``} ` `        ``} ` `        ``return` `answer; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``// Input value  ` `    ``double` `n = 0.625;  ` `     `  `    ``string result = toBinary(n); ` `    ``cout<<``"(0"``<< result <<``") in base 2"``<

## Java

 `// Java program to Binary real number to String. ` `import` `java.lang.*; ` `import` `java.io.*; ` `import` `java.util.*; ` ` `  `// Class Reperesentation of Binary real number ` `// to String ` `class` `BinaryToString ` `{ ` `    ``// Main function to convert Binary real number ` `    ``// to String ` `    ``static` `String printBinary(``double` `num) ` `    ``{ ` `        ``// Check Number is Between 0 to 1 or Not ` `        ``if` `(num >= ``1` `|| num <= ``0``) ` `            ``return` `"ERROR"``; ` ` `  `        ``StringBuilder binary = ``new` `StringBuilder(); ` `        ``binary.append(``"."``); ` ` `  `        ``while` `(num > ``0``) ` `        ``{ ` `            ``/* Setting a limit on length: 32 characters, ` `               ``If the number cannot be represented ` `               ``accurately in binary with at most 32 ` `               ``character  */` `            ``if` `(binary.length() >= ``32``) ` `                ``return` `"ERROR"``; ` ` `  `            ``// Multiply by 2 in num to check it 1 or 0 ` `            ``double` `r = num * ``2``; ` `            ``if` `(r >= ``1``) ` `            ``{ ` `                ``binary.append(``1``); ` `                ``num = r - ``1``; ` `            ``} ` `            ``else` `            ``{ ` `                ``binary.append(``0``); ` `                ``num = r; ` `            ``} ` `        ``} ` `        ``return` `binary.toString(); ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``double` `num1 = ``0.625``; ``// Input value in Decimal ` `        ``String output = printBinary(num1); ` `        ``System.out.println(``"(0"` `+ output + ``")  in base 2"``); ` ` `  `        ``double` `num2 = ``0.72``; ` `        ``output = printBinary(num2); ` `        ``System.out.println(``"("` `+ output + ``") "``); ` `    ``} ` `} `

## Python3

 `# Python3 program to binary real number to string ` ` `  `# Function to convert Binary real ` `# number to String ` `def` `toBinary(n): ` ` `  `    ``# Check if the number is Between 0 to 1 or Not ` `    ``if``(n >``=` `1` `or` `n <``=` `0``): ` `        ``return` `"ERROR"` ` `  `    ``answer ``=` `"" ` `    ``frac ``=` `0.5` `    ``answer ``=` `answer ``+` `"."` ` `  `    ``# Setting a limit on length: 32 characters. ` `    ``while``(n > ``0``): ` ` `  `        ``# Setting a limit on length: 32 characters ` `        ``if``(``len``(answer) >``=` `32``): ` `            ``return` `"ERROR"` ` `  `        ``# Multiply n by 2 to check it 1 or 0 ` `        ``b ``=` `n ``*` `2` `        ``if` `(b >``=` `1``): ` ` `  `            ``answer ``=` `answer ``+` `"1"` `            ``n ``=` `b ``-` `1` ` `  `        ``else``: ` `            ``answer ``=` `answer ``+` `"0"` `            ``n ``=` `b ` ` `  `    ``return` `answer ` ` `  `# Driver code ` `if` `__name__``=``=``'__main__'``: ` `    ``n ``=` `0.625` `    ``result ``=` `toBinary(n) ` `    ``print``(``"(0"``, result, ``") in base 2"``) ` `    ``m ``=` `0.72` `    ``result ``=` `toBinary(m) ` `    ``print``(``"("``, result, ``")"``) ` ` `  `# This code is contributed by ` `# Sanjit_Prasad `

## C#

 `// C# program to Binary real number to String.  ` ` `  `using` `System; ` `using` `System.Text; ` ` `  `// Class Reperesentation of Binary real number  ` `// to String  ` `class` `BinaryToString  ` `{  ` `    ``// Main function to convert Binary real number  ` `    ``// to String  ` `    ``static` `String printBinary(``double` `num)  ` `    ``{  ` `        ``// Check Number is Between 0 to 1 or Not  ` `        ``if` `(num >= 1 || num <= 0)  ` `            ``return` `"ERROR"``;  ` ` `  `        ``StringBuilder binary = ``new` `StringBuilder();  ` `        ``binary.Append(``"."``);  ` ` `  `        ``while` `(num > 0)  ` `        ``{  ` `            ``/* Setting a limit on length: 32 characters,  ` `            ``If the number cannot be represented  ` `            ``accurately in binary with at most 32  ` `            ``character */` `            ``if` `(binary.Length >= 32)  ` `                ``return` `"ERROR"``;  ` ` `  `            ``// Multiply by 2 in num to check it 1 or 0  ` `            ``double` `r = num * 2;  ` `            ``if` `(r >= 1)  ` `            ``{  ` `                ``binary.Append(1);  ` `                ``num = r - 1;  ` `            ``}  ` `            ``else` `            ``{  ` `                ``binary.Append(0);  ` `                ``num = r;  ` `            ``}  ` `        ``}  ` `        ``return` `binary.ToString();  ` `    ``}  ` ` `  `    ``// Driver Code  ` `    ``public` `static` `void` `Main()  ` `    ``{  ` `        ``double` `num1 = 0.625; ``// Input value in Decimal  ` `        ``String output = printBinary(num1);  ` `        ``Console.WriteLine(``"(0 "` `+ output + ``") in base 2"``);  ` ` `  `        ``double` `num2 = 0.72;  ` `        ``output = printBinary(num2);  ` `    ``Console.WriteLine(``"("` `+ output + ``") "``);  ` `    ``}  ` `}  `

## PHP

 `= 1 || ``\$n` `<= 0) ` `        ``return` `"ERROR"``; ` ` `  `    ``\$answer` `= ``""``; ` `    ``\$frac` `= 0.5; ` `    ``\$answer` `.= ``"."``; ` ` `  `    ``// Setting a limit on length: 32 characters.          ` `    ``while` `(``\$n` `> 0) ` `    ``{ ` `         `  `        ``//Setting a limit on length: 32 characters  ` `        ``if` `(``strlen``(``\$answer``) >= 32) ` `                ``return` `"ERROR"``; ` ` `  `            ``// Multiply n by 2 to check it 1 or 0 ` `            ``\$b` `= ``\$n` `* 2; ` `            ``if` `(``\$b` `>= 1) ` `            ``{ ` `                ``\$answer` `.= ``"1"``; ` `                ``\$n` `= ``\$b` `- 1; ` `            ``} ` `            ``else` `            ``{ ` `                ``\$answer` `.= ``"0"``; ` `                ``\$n` `= ``\$b``; ` `            ``} ` `        ``} ` `        ``return` `\$answer``; ` `} ` ` `  `// Driver code ` ` `  `// Input value  ` `\$n` `= 0.625;  ` ` `  `\$result` `= toBinary(``\$n``); ` `echo` `"(0"` `. ``\$result` `. ``") in base 2\n"``; ` ` `  `\$m` `= 0.72; ` `\$result``= toBinary(``\$m``); ` `echo` `"("` `. ``\$result` `. ``")"``; ` `     `  `// This code is contributed by mits ` `?> `

Output:

```(0.101)  in base 2
(ERROR)
```

Method 2

Alternatively, rather than multiplying the number by two and comparing it to 1, we can compare the number to . 5, then . 25, and so on. The code below demonstrates this approach.

## C++

 `// C++ program to Binary real number to String. ` `#include ` `#include ` `using` `namespace` `std; ` ` `  `// Function to convert Binary real ` `// number to String ` `string toBinary(``double` `n) ` `{ ` `    ``// Check if the number is Between 0 to 1 or Not ` `    ``if` `(n >= 1 || n <= 0) ` `        ``return` `"ERROR"``; ` ` `  `    ``string answer; ` `    ``double` `frac = 0.5; ` `    ``answer.append(``"."``); ` ` `  `    ``// Setting a limit on length: 32 characters.          ` `    ``while` `(n > 0) ` `    ``{ ` `        ``// 32 char max ` `        ``if` `(answer.length() >= 32) ` `            ``return` `"ERROR"``; ` `    ``// compare the number to .5 ` `        ``if` `(n >= frac) ` `        ``{ ` `            ``answer.append(``"1"``); ` `            ``n = n- frac; ` `        ``} ` `        ``else` `        ``{ ` `            ``answer.append(``"0"``); ` `        ``} ` `         `  `        ``frac /= 2; ` `    ``} ` `    ``return` `answer; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``// Input value  ` `    ``double` `n = 0.625; ` `     `  `    ``string result = toBinary(n); ` `    ``cout<<``"(0"``<< result <<``") in base 2"``<

## Java

 `// Java program to Binary real number to String. ` `import` `java.lang.*; ` `import` `java.io.*; ` `import` `java.util.*; ` ` `  `// Class Reperesentation of Binary real number ` `// to String ` `class` `BinaryToString ` `{ ` `    ``// Main function to convert Binary real ` `    ``// number to String ` `    ``static` `String printBinary(``double` `num) ` `    ``{ ` `        ``// Check Number is Between 0 to 1 or Not ` `        ``if` `(num >= ``1` `|| num <= ``0``) ` `            ``return` `"ERROR"``; ` ` `  `        ``StringBuilder binary = ``new` `StringBuilder(); ` `        ``double` `frac = ``0.5``; ` `        ``binary.append(``"."``); ` ` `  `        ``while` `(num > ``0``) ` `        ``{ ` `            ``/* Setting a limit on length: 32 characters, ` `               ``If the number cannot be represented ` `               ``accurately in binary with at most 32 ` `               ``characters  */` `            ``if` `(binary.length() >= ``32``) ` `                ``return` `"ERROR"``; ` ` `  `            ``// It compare the number to . 5. ` `            ``if` `(num >= frac) ` `            ``{ ` `                ``binary.append(``1``); ` `                ``num -= frac; ` `            ``} ` `            ``else`             `                ``binary.append(``0``); ` ` `  `            ``// Now it become 0.25 ` `            ``frac /= ``2``; ` `        ``} ` `        ``return` `binary.toString(); ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``double` `num1 = ``0.625``; ``// Input value in Decimal ` `        ``String output = printBinary(num1); ` `        ``System.out.println(``"(0"` `+ output + ``")  in base 2"``); ` ` `  `        ``double` `num2 = ``0.72``; ` `        ``output = printBinary(num2); ` `        ``System.out.println(``"("` `+ output + ``") "``); ` `    ``} ` `} `

## Python3

 `# Python3 program to Binary real number to String. ` ` `  `# Function to convert Binary real ` `# number to String ` `def` `toBinary(n): ` ` `  `    ``# Check if the number is Between  ` `    ``# 0 to 1 or Not ` `    ``if` `(n >``=` `1` `or` `n <``=` `0``): ` `        ``return` `"ERROR"``; ` ` `  `    ``frac ``=` `0.5``; ` `    ``answer ``=` `"."``; ` ` `  `    ``# Setting a limit on length: 32 characters.      ` `    ``while` `(n > ``0``): ` `         `  `        ``# 32 char max ` `        ``if` `(``len``(answer) >``=` `32``): ` `            ``return` `"ERROR"``; ` `             `  `        ``# compare the number to .5 ` `        ``if` `(n >``=` `frac): ` `            ``answer ``+``=` `"1"``; ` `            ``n ``=` `n ``-` `frac; ` `        ``else``: ` `            ``answer ``+``=` `"0"``; ` `         `  `        ``frac ``=` `(frac ``/` `2``); ` `     `  `    ``return` `answer; ` ` `  `# Driver code ` ` `  `# Input value  ` `n ``=` `0.625``; ` ` `  `result ``=` `toBinary(n); ` `print``(``"( 0"``, result, ``") in base 2"``); ` ` `  `m ``=` `0.72``; ` `result ``=` `toBinary(m); ` `print``(``"("``, result, ``")"``);  ` ` `  `# This code is contributed  ` `# by mits `

## C#

 `// C# program to Binary real number to String.  ` `using` `System; ` ` `  `// Class Reperesentation of Binary  ` `// real number to String  ` `class` `BinaryToString  ` `{  ` `    ``// Main function to convert Binary ` `    ``// real number to String  ` `    ``static` `string` `printBinary(``double` `num)  ` `    ``{  ` `        ``// Check Number is Between  ` `        ``// 0 to 1 or Not  ` `        ``if` `(num >= 1 || num <= 0)  ` `            ``return` `"ERROR"``;  ` ` `  `        ``string` `binary = ``""``;  ` `        ``double` `frac = 0.5;  ` `        ``binary += ``"."``;  ` ` `  `        ``while` `(num > 0)  ` `        ``{  ` `            ``/* Setting a limit on length: 32 characters,  ` `            ``If the number cannot be represented  ` `            ``accurately in binary with at most 32  ` `            ``characters */` `            ``if` `(binary.Length >= 32)  ` `                ``return` `"ERROR"``;  ` ` `  `            ``// It compare the number to . 5.  ` `            ``if` `(num >= frac)  ` `            ``{  ` `                ``binary += ``"1"``;  ` `                ``num -= frac;  ` `            ``}  ` `            ``else`         `                ``binary += ``"0"``;  ` ` `  `            ``// Now it become 0.25  ` `            ``frac /= 2;  ` `        ``}  ` `        ``return` `binary;  ` `    ``}  ` ` `  `    ``// Driver Code  ` `    ``public` `static` `void` `Main()  ` `    ``{  ` `        ``double` `num1 = 0.625; ``// Input value in Decimal  ` `        ``String output = printBinary(num1);  ` `        ``Console.WriteLine(``"(0"` `+ output + ``") in base 2"``);  ` ` `  `        ``double` `num2 = 0.72;  ` `        ``output = printBinary(num2);  ` `        ``Console.WriteLine(``"("` `+ output + ``") "``);  ` `    ``}  ` `}  ` ` `  `// This code is contributed by mits `

## PHP

 `= 1 || ``\$n` `<= 0) ` `        ``return` `"ERROR"``; ` ` `  `    ``\$frac` `= 0.5; ` `    ``\$answer` `= ``"."``; ` ` `  `    ``// Setting a limit on length: 32 characters.          ` `    ``while` `(``\$n` `> 0) ` `    ``{ ` `        ``// 32 char max ` `        ``if` `(``strlen``(``\$answer``) >= 32) ` `            ``return` `"ERROR"``; ` `             `  `        ``// compare the number to .5 ` `        ``if` `(``\$n` `>= ``\$frac``) ` `        ``{ ` `            ``\$answer``.=``"1"``; ` `            ``\$n` `= ``\$n` `- ``\$frac``; ` `        ``} ` `        ``else` `        ``{ ` `            ``\$answer``.=``"0"``; ` `        ``} ` `         `  `        ``\$frac` `= (``\$frac` `/ 2); ` `    ``} ` `    ``return` `\$answer``; ` `} ` ` `  `// Driver code ` ` `  `// Input value  ` `\$n` `= 0.625; ` ` `  `\$result` `= toBinary(``\$n``); ` `print``(``"(0"``.``\$result``.``") in base 2\n"``); ` ` `  `\$m` `= 0.72; ` `\$result` `= toBinary(``\$m``); ` `print``(``"("``.``\$result``.``")"``);  ` ` `  `// This code is contributed  ` `// by chandan_jnu ` `?> `

Output:

```(0.101)  in base 2
(ERROR)
```

Both approaches are equally good; choose the one you feel most comfortable with.

This article is contributed by Mr. Somesh Awasthi. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.