/*
十进制小数转换成二进制小数采用“乘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");
}
}
|
|