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

来源:互联网 发布:pvc地板知乎 编辑:程序博客网 时间:2024/06/01 07:18

惊恐

 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();
 }

0 0
原创粉丝点击