Convert Double to Binary representation?

后端 未结 6 1599
深忆病人
深忆病人 2020-11-28 16:04

I tried to convert a double to its binary representation, but using this Long.toBinaryString(Double.doubleToRawLongBits(d)) doesn\'t help, since I have large nu

6条回答
  •  粉色の甜心
    2020-11-28 16:15

    You may want to process whole and fractional part :

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

提交回复
热议问题