首页 > 代码库 > C++如何去除浮点数字符串后面的零
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。