码迷,mamicode.com
首页 > 编程语言 > 详细

C++如何去除浮点数字符串后面的零

时间:2014-06-19 11:06:40      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:c++   浮点数   精度      字符串   

有时我们需要将浮点数转化为字符,然后打印输出。下面是c++的里的一种实现: 

char str[32]; 
double num = 32.0100; 
sprintf(str, "%f", num); 
std::cout<<str<<std::endl; 

常见输出: 32.0100


但是,有时我们会有这样的需求:舍弃字符串最后多余的零。 我最近就遇到了这种需求,各处求解,最后通过网上案例的启发,想到了两种解决方案。

方案1:

创建一个函数removeLastZero,大体思路:从尾到头检索目标字符串,找到第一个非零数字,然后截取前半部分返回。

void removeLastZero(char* numstr)
{
	if (NULL == strchr(numstr, '.'))
		return;

	int length = strlen(numstr);
	for (int i = length - 1; i > 0; --i)
	{
		if ('\0' == numstr[i])
		{
			continue;
		}
		else if ('0' == numstr[i])
		{
			numstr[i] = '\0';
		}
		else if ('.' == numstr[i])// 小数点之后全为零
		{
			numstr[i] = '\0';
			break;
		}
		else// 小数点后有非零数字
		{
			break;
		}
	}
}
// 调用
char str[32]; 
double num = 32.0100; 
sprintf(str, "%f", num);
removeLastZero(str);
std::cout<<str<<std::endl; 


方案二:

使用STL提供的ostringstream很容易解决这个问题,也更自然。新的实现如下: 
double num=32.0100; 
std::ostringstream oss; 
oss<<num; 
std::cout<<oss.str()<<std::endl; 
输出: 32.01

C++如何去除浮点数字符串后面的零,布布扣,bubuko.com

C++如何去除浮点数字符串后面的零

标签:c++   浮点数   精度      字符串   

原文地址:http://blog.csdn.net/tobefxz/article/details/30106915

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