从键盘输入某个十进制小数或整数,转换成对应的二进制小数并输出。 (查询十进制小数转换成二进制小数的算法,使用循环来实现。 最多保留小数位后7位数字即可)算法
2017-07-15 11:09
1091 查看
/*算法:把小数分成两截,一截是整数,一截是小数。让整数除以2取余,倒叙输出来
打印出二进制(第一个数为个位,第二个数为10位,即乘以10,第三位数为百位,
即乘以100。。以此类推,即循环乘以10),直到除数
为0为止。小数乘以2,取整然后打印2进制,直到小数部分为0为止,或者打印小数
后7位为止。(实就是每次循环让第一个数x0.1,第二个数x0.01,依次如此。
最后相加,打印累加的值)*/
import java.util.*;
public class TenToTwo
{
public static void main(String[] args){
int sumInt=0,h=0;
double sumDouble=0,j=0.1;
System.out.print("请输入一个数:");
Scanner sc=new Scanner(System.in);
double num=sc.nextDouble();
int numInt=(int)num;//取整数部分
double numD=num-numInt;//取小数部分
//整数部分求二进制
for(int i=1;;i=i*10){
/*int chuShu=numInt/2;
int yuShu=numInt%2;//余数部分为2进制的一位
sumInt+=yuShu*i;
numInt=chuShu;//把除数赋予整数,循环让下一次去除*/
//上面的代码可以简化成下面的两行
sumInt+=numInt%2*i;
numInt=numInt/2;
if(numInt==0){
break;
}
}
//小数部分求二进制
for(;;j=j*0.1){
/*int zhengShu=(int)(numD*2);//求二进制数
sumDouble+=zhengShu*j;//一个二进制数*0.1,下一个则乘以0.01,依次,最后累加
double xiaoShu=numD*2-zhengShu;//剩下的小数
numD=xiaoShu;//剩下的小数赋予numD去循环,因为剩下的小数也要继续乘以2*/
//上面的代码可以简化如下两行:
sumDouble+=(int)(numD*2)*j;
numD=numD*2-(int)(numD*2);
h++;//计已经有了小数点后多少位数
if(numD==0||h==7){
break;
}
}
System.out.print(num+"的二进制数为:"+(sumInt+sumDouble));
}
}
打印出二进制(第一个数为个位,第二个数为10位,即乘以10,第三位数为百位,
即乘以100。。以此类推,即循环乘以10),直到除数
为0为止。小数乘以2,取整然后打印2进制,直到小数部分为0为止,或者打印小数
后7位为止。(实就是每次循环让第一个数x0.1,第二个数x0.01,依次如此。
最后相加,打印累加的值)*/
import java.util.*;
public class TenToTwo
{
public static void main(String[] args){
int sumInt=0,h=0;
double sumDouble=0,j=0.1;
System.out.print("请输入一个数:");
Scanner sc=new Scanner(System.in);
double num=sc.nextDouble();
int numInt=(int)num;//取整数部分
double numD=num-numInt;//取小数部分
//整数部分求二进制
for(int i=1;;i=i*10){
/*int chuShu=numInt/2;
int yuShu=numInt%2;//余数部分为2进制的一位
sumInt+=yuShu*i;
numInt=chuShu;//把除数赋予整数,循环让下一次去除*/
//上面的代码可以简化成下面的两行
sumInt+=numInt%2*i;
numInt=numInt/2;
if(numInt==0){
break;
}
}
//小数部分求二进制
for(;;j=j*0.1){
/*int zhengShu=(int)(numD*2);//求二进制数
sumDouble+=zhengShu*j;//一个二进制数*0.1,下一个则乘以0.01,依次,最后累加
double xiaoShu=numD*2-zhengShu;//剩下的小数
numD=xiaoShu;//剩下的小数赋予numD去循环,因为剩下的小数也要继续乘以2*/
//上面的代码可以简化如下两行:
sumDouble+=(int)(numD*2)*j;
numD=numD*2-(int)(numD*2);
h++;//计已经有了小数点后多少位数
if(numD==0||h==7){
break;
}
}
System.out.print(num+"的二进制数为:"+(sumInt+sumDouble));
}
}
相关文章推荐
- 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
- 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。
- 定义一个List集合并实例化对应的实现类对象。循环输入任意个整数,输入0结束输入循环,对集合中的数据进行从大到小的排序后输出
- 算法例题-求输入一个整数,输出对应二进制中1的个数。
- 编写程序显示由数字组成的平行四边形图案。从键盘输入一个整数(£40),则输出对应的图案。例如输入4,则输出为:
- 使用循环分别实现将十进制整数和小数变成二进制数
- 三种算法实现:从键盘输入任意正整数,从低位到高位逐位输出各位数字
- 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。
- java实现十进制整数或小数转换成二进制
- 使用三种算法解决从键盘输入两个整数,输出两个整数的最大公约数的问题
- 从键盘上连续录入一批整数,比较并输出其中的最大值和最小值,当输入数字0时结束循环
- 每天学习一算法系列(20)(输入一个表示整数的字符串,把该字符串转换成整数并输出)
- 【栈】十进制转换成二进制的过程及算法实现
- 输入一个整数,使用递归方法实现反向输出
- 将十进制整形数转换成二进制,然后通过字符型输出 自己实现的一个简单的例子
- 使用bitset实现二进制和十进制的相互转换
- Java使用bit array实现二进制,十进制,十六进制值之间的转换
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- 编写程序,测试由键盘输入的整数n是否含有数字5,若含有5,则输出“yes”,否侧输出“no”
- 判断是否为2的幂||输出一个整数二进制格式中1的个数 非循环非递归实现