如何转换小数用Java二进制? [英] How do I convert a decimal fraction to binary in Java?
本文介绍了如何转换小数用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屋!
查看全文