A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
十进制小数转换成二进制小数采用“乘2取整,顺序排列”
方法:用2乘以十进制小数,将乘积的整数部分取出,再用2乘余下的小数部分。。。。
直到乘积的整数部分为0;或者此时0或者1为二进制的最后一位。或者达到要求的精度为止
十进制小数转二进制
0.625=(0.101)B
0.625*2=1.25=====取出整数部分1
0.25*2=0.5=======取出整数部分0
0.5*2=1==========取出整数部分1,符合上述条件结束
自上而下写出结果(0.101)B
*/
import java.util.Scanner;
class TestDoubleBinary
{
public static void main(String[] args)
{
  Scanner sc = new Scanner (System.in);
  System.out.println("----十进制小数转换二进制----");
  System.out.println("-----输入十进制小数部分------");
  double bi = sc.nextDouble();
  System.out.print(bi+"————"+"("+(int)bi+".");
  //判断输入的数字是否大于1,是的话只拿到小数部分带入循环
  if (bi>1)
  {
   bi=bi-(int)bi;
  }
  //判断是否是等于1
  while(bi!=1)
  {
   bi=bi*2;
  
   if(bi>1)
   {
    bi=bi-1;
    System.out.print(1);
   }else if(bi<1)
   {
    System.out.print(0);
   }else
    //如果bi的值乘2后正好等于1输出1并跳出while
   {
    System.out.print(1);break;
   }
  }//end while

  System.out.println(")B");
}
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马