当出现无限循环小数时,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; }
022给定一个字符串类型(string)表示的小数,打印出它的二进制表示(keep it up)
原文地址:http://blog.csdn.net/xiaoliangsky/article/details/39194817