打印一个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();
}