您的位置:首页 > 其它

LintCode "Binary Representation"

2015-10-04 11:54 239 查看
Not hard to think of a solution. But the key is all details.

class Solution {

public:
/**
*@param n: Given a decimal number that is passed in as a string
*@return: A string
*/
string binaryRepresentation(string n) {
size_t pos = n.find(".");
unsigned long vi = atoi(n.substr(0, pos).c_str());
double vf = atof(n.substr(pos).c_str());

//  Int part
string si;
while(vi)
{
si = ((vi & 1) ? '1' : '0') + si;
vi >>= 1;
}
if(si.empty()) si = "0";
if(vf == 0.) return si;

//  Fractional part
string sf;
while (vf > 0.0)
{
if (sf.length() > 32) return "ERROR";
if (vf >= 0.5) {
sf += '1';
vf -= 0.5;
}
else
{
sf += '0';
}
vf *= 2;
}
return si + "." + sf;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: