在实际应用中,我们通常需要将浮点数转化为字符,然后打印输出。下面是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) |