題目:將十進制小數用二進制表示,如果不能用32位小數表示,則輸出“ERROR”
思路:1.將小數乘以2,若結果大於1,則將二進制小數位上表示1,並將結果減1
2.若結果小於1,則繼續乘以2,循環1,2兩步,直至結果等於0
3.若小數的位數超過34位,則輸出“ERROR”,結束循環。
public class erjinzhixiaoshu
{
public static void main(String args[])
{
double num=0.625;
StringBuilder sb=new StringBuilder ("0.");
while(num>0)
{
num=num*2;//乘以2,挪整
if(num>=1)
{
sb.append("1");//乘以2後大於1,則在後面添1,
num=num-1;//消掉整數部分
}
else{
sb.append("0");//添加0
num=num;
}
if(sb.length()>34)//若無法用法32位小數表示(加上0.兩位,共34位)
{
System.out.print("ERROR");return ;
}
}
System.out.print(sb.toString());
}
}
2.數組實現(思路和上面一樣,主要是複習了一下數組)
public class erjinzhixiaoshu
{
public static void main(String args[])
{ int i ;
int count=0;
double num=0.125;
String a[]=new String[34];
for(i=0;i<32&&num>0;i++)
{
num=num*2;
if(num>=1)
{
a[i]="1";
num=num-1;
}
else
{
a[i]="0";
num=num;
}
count++;
}
if(i==32)
{
System.out.print("ERROR");
}
else
{ String b="0.";
for(int m=0;m<count;m++)
{
b=b+ a[m];
}
System.out.print(b);
}
}
}