如何转换小数用Java二进制? [英] How do I convert a decimal fraction to binary in Java?

查看:656
本文介绍了如何转换小数用Java二进制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要转换0.5基座10,基地2(0.1)。
我已经尝试使用

I need to convert 0.5 in base 10 to base 2 (0.1). I have tried using

Double.doubleToRawLongBits(0.5)

和它返回 4602678819172646912 我的猜测是十六进制,但它并没有道理给我。

and it returns 4602678819172646912 which I guess is in hex, but it does not make sense to me.

推荐答案

乘以你数除以2 ^ N,转换为BigInteger,以转换成的二进制的字符串,位置n增加一个小数点(从右到左)。

Multiply you number by 2^n, convert to an BigInteger, convert to binary String, add a decimal point at position n (from right to left).

例(快速和放大器; ++脏):

Example (quick & ++dirty):

private static String convert(double number) {
    int n = 10;  // constant?
    BigDecimal bd = new BigDecimal(number);
    BigDecimal mult = new BigDecimal(2).pow(n);
    bd = bd.multiply(mult);
    BigInteger bi = bd.toBigInteger();
    StringBuilder str = new StringBuilder(bi.toString(2));
    while (str.length() < n+1) {  // +1 for leading zero
        str.insert(0, "0");
    }
    str.insert(str.length()-n, ".");
    return str.toString();
}

这篇关于如何转换小数用Java二进制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆