java小数转二进制,如何转换小数用Java二进制?

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

I have tried using

Double.doubleToRawLongBits(0.5)

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

解决方案

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();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值