@@ -0,0 +1,2524 @@
+package org.speedfirst.leetcode.bit;%0A%0A/**%0A * Created by jiankuan on 1/21/15.%0A */%0Apublic class BinaryRepresentation %7B%0A%0A    public String binaryRepresentation(String n) %7B%0A        if (n.length() == 0) %7B%0A            return n;%0A        %7D%0A%0A        boolean positive = true;%0A        if (n.charAt(0) == '-') %7B%0A            n = n.substring(1, n.length());%0A            positive = false;%0A        %7D%0A        int pos = n.indexOf('.');%0A        if (pos == -1) %7B%0A            String res = intToBin(n);%0A            if (!positive) %7B%0A                return %22-%22 + res;%0A            %7D else %7B%0A                return res;%0A            %7D%0A        %7D else %7B%0A            String digitStr = digitToBin(n.substring(pos));%0A            if (digitStr == null) %7B%0A                return %22ERROR%22;%0A            %7D%0A            String intStr = intToBin(n.substring(0, pos));%0A            String res;%0A            if (digitStr.equals(%220%22)) %7B%0A                res = intStr;%0A            %7D else %7B%0A                res = intStr + %22.%22 + digitStr;%0A            %7D%0A            if (!positive) %7B%0A                return %22-%22 + res;%0A            %7D else %7B%0A                return res;%0A            %7D%0A        %7D%0A    %7D%0A%0A    private String intToBin(String n) %7B%0A        StringBuilder sb = new StringBuilder();%0A        long num = Long.parseLong(n);%0A        if (num == 0) %7B%0A            return %220%22;%0A        %7D%0A        while (num %3E 0) %7B%0A            int digit = (int)(num & 0x01);%0A            sb.append(digit);%0A            num %3E%3E= 1;%0A        %7D%0A%0A        return sb.reverse().toString();%0A    %7D%0A%0A    private String digitToBin(String n) %7B%0A        double num = Double.parseDouble(n); // Note, you can't use integer cal here. Integer is too accurate to pass the test case 0.6418459415435791%0A        if (num == 0.0) %7B%0A            return %220%22;%0A        %7D%0A%0A        StringBuilder sb = new StringBuilder();%0A        while (num != 0) %7B%0A            num *= 2;%0A            if (num %3E= 1.0) %7B%0A                sb.append('1');%0A                num -= 1.0;%0A                if (num == 0) %7B%0A                    break;%0A                %7D%0A            %7D else %7B%0A                sb.append('0');%0A            %7D%0A            if (sb.length() %3E 32) %7B%0A                return null;%0A            %7D%0A        %7D%0A%0A        return sb.toString();%0A    %7D%0A%0A%0A    public static void main(String%5B%5D args) %7B%0A        BinaryRepresentation br = new BinaryRepresentation();%0A        String res = br.binaryRepresentation(%220.5%22);%0A        System.out.println(res);%0A        String res2 = br.binaryRepresentation(%220.6418459415435791%22);%0A        System.out.println(res2);%0A    %7D%0A%7D%0A

add binary representation