双精度到基数 2 转换(有简单的方法吗?)

NaC*_*114 3 java double base-conversion

您好,感谢您的帮助,

(使用Java)我已经查看了一些将双精度数转换为基数2(仍然是双精度数)的方法,但我找不到一个简单的方法。我读到,考虑到 Double 的编码方式,像 Double.doubleToRawLongBits() 这样的方法可以给出 Base 2,但有不同的解释。

使用以下方法转换 int 非常简单:Integer.toString(x, 2)

我想知道是否有人知道一种简单的方法将 Double 转换为它的基数 2 对应的 Double?如果转换后我有 Double = 0.25,我希望看到 double = 0.01。

谢谢

Pet*_*rey 5

您可以像这样提取 a 的一部分double

long val = Double.doubleToRawLongBits(d);
int sign = (int) (val >>> 63);
int exp = (int) ((val >>> 52) & 2047);
long mantissa = val & ((1L << 52) - 1);
Run Code Online (Sandbox Code Playgroud)

之后,您可以根据需要打印尾数Long.toString(mantissa, 2)、指数和符号。这是假设正常数字。