/*
* 把输入的一个十进制数输出为用二进制表示的数
*
*/
import java.util.Scanner;
public class CastBinaryX{
//整数部分转成二进制的方法
public static void intCast(int i,StringBuffer buffer){
for(;i>0;i=i/2){
buffer.append(i%2);
System.out.println(i%2);
}
buffer.reverse();//实现反转
}
//小数部分转成二进制的方法
public static void doubleCast(double k ,StringBuffer buffer){
for(;k>0.000001;k=k*2){
buffer.append(".");
buffer.append((int)(k*2));
System.out.println((int)(k*2));
}
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
double num = in.nextDouble();//输入的是12.125
intCast((int)num,sb);
double k= num-(int)num;
System.out.println(k);
doubleCast(k,sb);
System.out.println(sb);
in.close();
}
}
输出的是:2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647
2147483647 一直循坏,求帮助,新手一枚
你的循环里面k没有设置上界。。。所以才会一直循环。