需要帮助:将二进制转换为小数的程序(Java)

时间:2015-11-12 23:07:07

标签: java binary decimal

我想帮助我的代码。我正在做一个将二进制数转换为小数的方法。这是我的代码:

public double decimal(double number){
    String num=(number+"");
    char charac;
    double n;
    double cont=0;
    double exp;
    double res=0;
    for(int i=num.length()-1;i>=0;i--){
        charac=num.charAt(i);//obtains digits 1 by 1 and converts to char
        n=(Character)charac;//converts the digit into a number (double)
        exp=Math.pow(2, cont);//makes the exponential function to multiply to n
        n=n*exp;//multiplies exponential with the digit
        res+=n;//adds digit to accumulator
        cont++; 
    }
    return res;
}

我遇到的问题是,无论出于何种原因,数字都会被搞砸,比如n在for循环的第一个循环中被赋值为48。 我尝试使用n作为Int而不是它似乎运行良好但是在for循环的第二个循环中它被分配-2以某种方式并且破坏了添加。

3 个答案:

答案 0 :(得分:0)

更改

n=(Character)charac;

使用Character.digit(char, int)否则你得到ascii值(不是数字值)

n=Character.digit(charac, 10);

答案 1 :(得分:0)

通过将char赋值为double,它实际上传递了该数字的ASCII值,例如char 0返回48。

答案 2 :(得分:0)

我认为How to convert binary string value to decimal的答案会对您有所帮助:

String c = "110010"; // as binary
    int decimalValue = Integer.parseInt(c, 2);
    System.out.println(decimalValue);

结果:50