打印一个0到1之间的数的二进制表示

惊恐

 public static String printBinary(double num)
  {
 if(num>=1||num<=0)
 return "ERROR";
 StringBuilder binary=new StringBuilder();
 binary.append(".");
 while(num>0)
 {
 /*
  *设定长队上限,32个字符
  */
 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();  
  }

上面的做法是将数字乘以2,然后与1进行比較。此外我们还能够将这个数与0.5比較,然后与0.25比較,依此类推。

例如以下:

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)
{
/*设定长度上限,32个字符
*/
if(binary.length()>32)
return "ERROR";
if(num>=frac)
{
binary.append(1);
num-=frac;
}
else
{
binary.append(0);
}
frac/=2;
}
return binary.toString();
 }

posted @ 2017-06-12 20:31  yfceshi  阅读(203)  评论(0编辑  收藏  举报