1.位運算 題六--用二進制表示十進制小數

題目:將十進制小數用二進制表示,如果不能用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);
      }


    }

}

 

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 489
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章