为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

1 回答

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信