---
title: 小数の２進数表現
tags: []
categories: ["Programming", "Algorithm", "BitManipulation"]
date: 2011-08-16T17:28:42Z
updated: 2011-08-16T17:28:42Z
---

public static String toBinaryString(double d) {
        int intPart = (int) d;
        double decPart = d - intPart;

        String intStr = "";
        while (intPart > 0) {
            int b = intPart % 2;
            intPart >>= 1;
            intStr = b + intStr;
        }
        StringBuilder s = new StringBuilder();
        while (decPart > 0) {
            if (s.length() > 32) {
                return "ERROR";
            }

            if (decPart == 1) {
                s.append(1);
                break;
            }
            double b = decPart * 2;
            if (b >= 1) {
                s.append(1);
                decPart = b - 1;
            } else {
                s.append(0);
                decPart = b;
            }
        }
        return intStr + "." + s.toString();
    }


11.75 -> 1011.11
