/**
* 功能:给定一个介于0和1之间的实数,类型为double,打印它的二进制表示。如果该数字无法精准地用32位以内的二进制表示,则打印“ERROR”。
*/
两种方法:
方法一:
[java] view plain copy
- //将数字乘以2以后,与1比较。
- public static String printBinary(double num){
- if(num>=1||num<=0)
- return "ERROR";
- StringBuilder binary=new StringBuilder();
- binary.append(".");
- while(num>0){
- if(binary.length()>=32)
- return "ERROR";
- double r=num*2;
- if(r>=1){
- binary.append("1");
- num=r-1;
- }else{
- binary.append("0");
- num=r;
- }
- }
- return binary.toString();
- }
方法二:更容易理解 [java] view plain copy
- //将数字与0.5比较
- public static String printBinary2(double num){
- if(num>=1||num<=0)
- return "ERROR";
- StringBuilder binary=new StringBuilder();
- double frac=0.5;
- binary.append(".");
- while(num>0){
- if(binary.length()>32){
- return "ERROR";
- }
- if(num>=frac){
- binary.append("1");
- num-=frac;
- }else{
- binary.append("0");
- }
- frac/=2;
- }
- return binary.toString();
- }