Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141195
  • 博文数量: 30
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-07 10:53
文章分类

全部博文(30)

文章存档

2009年(1)

2008年(29)

我的朋友

分类: C/C++

2008-03-07 10:59:18

在实际应用中,我们通常需要将浮点数转化为字符,然后打印输出。下面是c++的实现:
    char str[16];
    double num = 23.0;
    sprintf(str, "%f", num);
    std::cout<
典型输出如下:
    23.000000
    
但是,有时我们会有这样的需求:舍弃字符串中多余的零。
要求很简单,最直接的做法就是创建一个函数,算法大致是:从尾到头检索目标字符串,找到第一个非零数字,然后截取前半部分返回。但是浮点数是有误差的,差一个微乎其微的小小数是很普遍的,计算机把1写做1.000001是常有的事。这就增加了实现的难度。怎么办?
用惯了STL,看着字符数组,就有种使用c++不入流的感觉。使用STL提供的ostringstream很容易解决这个问题,也更自然。新的实现如下:
    double num=23.000001;
    std::ostringstream oss;
    oss<    std::cout<    
典型输出如下:
  23
阅读(3229) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:基于windows的Qt程序IDE的配置

给主人留下些什么吧!~~