码迷,mamicode.com
首页 > 其他好文 > 详细

022给定一个字符串类型(string)表示的小数,打印出它的二进制表示(keep it up)

时间:2014-09-11 01:11:31      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:c++   算法   

给定一个字符串类型(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;
}


022给定一个字符串类型(string)表示的小数,打印出它的二进制表示(keep it up)

标签:c++   算法   

原文地址:http://blog.csdn.net/xiaoliangsky/article/details/39194817

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!