二进制表示

来源:互联网 发布:taimou麦克雷数据 编辑:程序博客网 时间:2024/05/16 19:33

给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在 32 个字符之内来精确地表示,则返回 "ERROR"

样例

n = "3.72", 返回 "ERROR".

n = "3.5", 返回 "11.1".

class Solution {public:    /**     *@param n: Given a decimal number that is passed in as a string     *@return: A string     */    string binaryRepresentation(string n) {        // wirte your code here        int intPart = atoi(n.c_str());        double decPart = atof(n.c_str());        decPart -= intPart;        string intStr;        string decStr;        if (intPart == 0)        {            intStr += '0';        }        while (intPart > 0)        {            int c = intPart % 2;            intStr = (char)(c+'0') + intStr;            intPart /= 2;        }        while (decPart > 0.0)        {            if (decStr.length() > 32)             {                return "ERROR";            }            double r = decPart * 2;            if (r >= 1.0)            {                decStr += '1';                decPart = r - 1.0;            }            else            {                decStr += '0';                decPart = r;            }        }        return decStr.length() > 0? intStr + "." + decStr : intStr;    }};


0 0
原创粉丝点击