给定一个字符串类型(string)表示的小数,打印出它的二进制表示。
这个题注意字符串的合法性。
不过下面的代码没有处理那种无限循环的小数,
当出现无限循环小数时,while(other>0)可能永久为true
代码:
#include <iostream> #include <string> std::string to_binary_string(const std::string& vNumStr) { std::string::size_type Pos = vNumStr.find('.'); std::string IntPart = vNumStr.substr(0, Pos); std::string OtherPart = vNumStr.substr(Pos, vNumStr.length()-Pos); if (IntPart != "") { int Num = atoi(IntPart.c_str()); IntPart = ""; while (Num) { if (Num&1) IntPart = "1" + IntPart; else IntPart = "0" + IntPart; Num >>= 1; } } if (OtherPart.size() > 1) { int Other = atof(OtherPart.c_str()); OtherPart = ""; while (Other>0) { Other *= 2; if (Other>=1) { OtherPart += "1"; Other -= 1; } else { OtherPart += "0"; } } } return OtherPart.size() > 1 ? IntPart + OtherPart : IntPart; }
时间: 2024-11-11 03:10:35