给定一个介于0和1之间的实数(例如,0.72)作为双精度输入,打印二进制表示。如果数字不能以最多32个字符的二进制形式准确表示,请打印“错误:”
null
例如:
Input : (0.625)10Output : (0.101)2Input : (0.72)10Output : ERROR
解决方案: 首先,让我们先问问自己二进制中的非整数是什么样子。与十进制数类似,二进制数为0.101 2. 看起来像: 零点一零一 2. = 1 * 1/2 1. + 0 *1/2 2. + 1 * 1/2 3. .
方法1:将小数部分乘以2
要打印小数部分,我们可以乘以2并检查2*n是否大于或等于1。这实质上是“转移”分数和。也就是说:
r = 210 * n; = 210 * 0.1012; = 1 * 1/20 + 0 *1/21 + 1 * 1/22; = 1.012;
如果r>=1,那么我们知道n在小数点后有一个1。通过不断这样做,我们可以检查每个数字。
C++
// C++ program to binary real number to string #include <iostream> #include<string> 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" <<endl; double m = 0.72; result= toBinary(m); cout<< "(" <<result<< ")" <<endl; } // This code is contributed by Himanshu Batra |
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
<?php // PHP program to binary real number // to string // Function to convert Binary real // number to String function toBinary( $n ) { // Check if the number is Between // 0 to 1 or Not if ( $n >= 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" ; $m = 0.72; $result = toBinary( $m ); echo "(" . $result . ")" ; // This code is contributed by mits ?> |
输出:
(0.101) in base 2(ERROR)
方法2
或者,我们可以将数字与进行比较,而不是将数字乘以2并将其与1进行比较。5.那么。25岁,等等。下面的代码演示了这种方法。
C++
// C++ program to Binary real number to String. #include <iostream> #include<string> 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" <<endl; double m = 0.72; result= toBinary(m); cout<< "(" <<result<< ")" <<endl; } |
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
<?php // PHP program to Binary real number to String. // Function to convert Binary real // number to String function toBinary( $n ) { // Check if the number is Between // 0 to 1 or Not if ( $n >= 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" ); $m = 0.72; $result = toBinary( $m ); print ( "(" . $result . ")" ); // This code is contributed // by chandan_jnu ?> |
Javascript
<script> // Javascript program to Binary real // number to String. // Main function to convert Binary // real number to String function printBinary(num) { // Check Number is Between // 0 to 1 or Not if (num >= 1 || num <= 0) return "ERROR" ; let binary = "" ; let 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 = frac / 2; } return binary; } // Driver code // Input value in Decimal let num1 = 0.625; let output = printBinary(num1); document.write( "(0" + output + ") in base 2" + "</br>" ); let num2 = 0.72; output = printBinary(num2); document.write( "(" + output + ") " ); // This code is contributed by rameshtravel07 </script> |
输出:
(0.101) in base 2(ERROR)
两种方法都同样好;选择一个你觉得最舒服的。 本文由 Somesh Awasthi先生 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END