我正在尝试用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);
最佳答案
更简单的方法是解析二进制数并最后应用指数。
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
}
关于java - 在 Java 中将二进制实数转换为 double - 例如,0.011011110010101 到 .4342,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21367944/