首页 > 其他 > 详细

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

时间:2014-09-11 01:11:31      阅读:311      评论:0      收藏:0      [点我收藏+]
给定一个字符串类型(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)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!