问答详情
源自:-

朋友们帮我看看出了什么问题

/*
 * 把输入的一个十进制数输出为用二进制表示的数
 *
 */
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 一直循坏,求帮助,新手一枚

提问者:一起创业 2015-03-20 19:47

个回答

  • 发条橙
    2015-03-20 20:05:19

    你的循环里面k没有设置上界。。。所以才会一直循环。