9.5位操作(2)——给定一个介于0和1之间的实数,类型为double,打印它的二进制表示
9.5位操作(二)——给定一个介于0和1之间的实数,类型为double,打印它的二进制表示
方法二:更容易理解
/**
* 功能:给定一个介于0和1之间的实数,类型为double,打印它的二进制表示。如果该数字无法精准地用32位以内的二进制表示,则打印“ERROR”。
*/
两种方法:
方法一:
//将数字乘以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(); }
方法二:更容易理解
//将数字与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(); }
版权声明:本文为博主原创文章,未经博主允许不得转载。