022文字列タイプ(string)で表される小数を指定し、そのバイナリ表現を印刷する(keep it up)
文字列タイプ(string)で表される小数を指定し、そのバイナリ表現を印刷します.
この問題は文字列の合法性に注意する.
しかし、次のコードは無限ループの小数を処理していません.
無限ループ小数が現れるとwhile(other>0)は永久にtrueになる可能性があります
コード:
この問題は文字列の合法性に注意する.
しかし、次のコードは無限ループの小数を処理していません.
無限ループ小数が現れると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;
}