在Java中将二进制实数转换为double - 例如,0.011011110010101到.4342

时间:2014-01-26 19:13:55

标签: java binary decoding

我正在尝试用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);

1 个答案:

答案 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
}