用于将小数转换为二进制的程序的奇怪故障

时间:2013-07-09 10:05:18

标签: java binary

这是家庭作业的帮助,但我已经完成了大部分工作,但我仍然坚持一些细节。 请记住,我不能使用数组或方法,只允许选择性语句和循环。

到目前为止,我正在获得正确的二进制值作为double,但是当我尝试将double转换为int以进行正确显示时,它会触发较长的二进制数,因为它会将它们显示为1.00101011E8 for例如,那么对于那些较大的二进制数,当我尝试将它转换为整数时,它当然会弄乱它。我无法弄清楚如何正确显示二进制文件。

任何帮助将不胜感激。奇怪的是,有时程序会为之前工作过的相同数字吐出完全无意义,然后当我重新运行程序时,我再次得到正确的值。据我所知,所有值都在循环中正确初始化。 这是代码,我为这个烂摊子道歉,我是一个绝对的初学者。

import javax.swing.JOptionPane;

public class Experiment {
    public static void main(String[] args) {
        int dec;
        int binary;

        int temp;
        int digit; 
        double useless;      
        int k = 5;
        int count = 0;  
        int state; 
        int current;
        int i; 
        int q;

        do {
            String input = JOptionPane.showInputDialog (null,"Enter Decimal to be converted to Binary Number");
            dec = Integer.parseInt(input); 

            int power = 0;
            double full = 0;     
            // size determination loop stored in count
            temp = dec;
            while (k!=0) {    
                k = temp/2;
                temp = k;
                count = count + 1;
            }

            current = dec;
            for (i = 0; i < count; i++) {            
                binary = current%2;
                q = current/2;
                current = q;
                full = full +(binary * (Math.pow(10,power)));
                power = power + 1;
            }

            System.out.println("Size is "+count);
            System.out.println("The answer is "+full);
            System.out.println("If you would like to exit press 1.");
        } while (dec != 1); 
    }
}  

0 个答案:

没有答案