Convierte la representación de Double to Binary?

Tengo el siguiente problema, así que traté de convertir un doble en su representación binaria, pero usar Long.toBinaryString(Double.doubleToRawLongBits(d)) no ayuda, ya que tengo números grandes, que Long no puede almacenarlos. es decir, 2^900 .

Apreciar cualquier ayuda :).

Long.toBinaryString(Double.doubleToRawLongBits(d)) parece funcionar bien.

 System.out.println("0: 0b" + Long.toBinaryString(Double.doubleToRawLongBits(0D))); System.out.println("1: 0b" + Long.toBinaryString(Double.doubleToRawLongBits(1D))); System.out.println("2: 0b" + Long.toBinaryString(Double.doubleToRawLongBits(2D))); System.out.println("2^900: 0b" + Long.toBinaryString(Double.doubleToRawLongBits(Math.pow(2, 900)))); System.out.println("Double.MAX_VALUE: 0b" + Long.toBinaryString(Double.doubleToRawLongBits(Double.MAX_VALUE))); /* prints: 0: 0b0 1: 0b11111111110000000000000000000000000000000000000000000000000000 2: 0b100000000000000000000000000000000000000000000000000000000000000 2^900: 0b111100000110000000000000000000000000000000000000000000000000000 Double.MAX_VALUE: 0b111111111101111111111111111111111111111111111111111111111111111 */ 

Es posible que desee procesar la parte completa y fraccionaria:

 public String toBinary(double d, int precision) { long wholePart = (long) d; return wholeToBinary(wholePart) + '.' + fractionalToBinary(d - wholePart, precision); } private String wholeToBinary(long l) { return Long.toBinaryString(l); } private String fractionalToBinary(double num, int precision) { StringBuilder binary = new StringBuilder(); while (num > 0 && binary.length() < precision) { double r = num * 2; if (r >= 1) { binary.append(1); num = r - 1; } else { binary.append(0); num = r; } } return binary.toString(); } 

¿Has probado usando java.math.BigInteger y llamando a toString(int radix) con un parámetro de 2?

Puede usar un BigInteger para contener su gran número y el método BigInteger.toString () para recuperar una representación binaria de este.

 BigInteger bigNum = new BigInteger(sYourNum); System.out.println( bigNum.toString(2) ); 

Puede usar Double.toHexString (d) y luego transformar la cadena hexadecimal en una binaria usando un bucle for y un StringBuilder.