c++ 字符减去‘0’_C++如何去除浮点数字符串后面的零

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

char str[32];

double num = 32.0100;

sprintf(str, "%f", num);

std::cout<

常见输出: 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<

方案二:

使用STL提供的ostringstream很容易解决这个问题,也更自然。新的实现如下: double num=32.0100;

std::ostringstream oss;

oss<

std::cout<

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值