我想帮助我的代码。我正在做一个将二进制数转换为小数的方法。这是我的代码:
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以某种方式并且破坏了添加。
答案 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