我正在尝试用java编写代码,以便在算术二进制代码中进行解码。 问题是我收到的二进制数是,例如,“0110111100101011”,表示二进制小数值0.011011110010101,等于十进制0.4342498。
我找不到任何办法这样做;请帮帮我。
我知道方程式的字符串以及如何在字符串的值之后计算转换为double
值,但我不知道如何将字符串转换为double
。
import java.util.Scanner;
double value = .434249878; // still cant kno who to chamge it from binary to decimal
double upper = 1.0;
double lower = 0.0;
double current_range = upper - lower;
char ch;
double v;
Scanner scan=new Scanner (System.in);
System.out.println ("Enter characor");
// ch= scan.next().charAt(0);
while(ch!='n'){
current_range = upper - lower;
v= (value-lower) / (upper-lower);
答案 0 :(得分:1)
更简单的方法是解析二进制数并最后应用指数。
public static double parseBinary(String s) {
int exp = Integer.MIN_VALUE;
long value = 0;
for(int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch == '.') {
exp = 0;
} else {
value = value * 2 + ch - '0';
exp++;
}
}
return exp < 0 ? value : Math.scalb(value, -exp); // value * 2^^-exp
}