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

Last Updated : 13 Oct, 2022

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
```

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 Representation 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 Representation 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` `?>`

## Javascript

 ``

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 representation 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 representation 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` `?>`

## Javascript

 ``

Output:

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

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