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

标签 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);

最佳答案

更简单的方法是解析二进制数并最后应用指数。

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/

相关文章:

java - 在Android上更改ImageView的BackgroundTint

c++ - 二进制集合计算器函数

python - appengine base64 编码的字符串与我本地计算机的不同

Java 游程长度解码(扩展压缩字符串)

java - 在 httpclient : java 中编写的 curl 等效代码

java - Kotlin:从列表中的嵌套集中查找计数(更实用的方法)

c - c中的二进制转十进制

c - 显示 MSB 到 LSB

Python 3.6 - 从文件中读取编码文本并转换为字符串

java - 使用可完成 future 的实体的流程列表