浮点数输出

(100/100 分数)
题目描述

编写一个程序,输入一个浮点数和输出格式要求,按照格式要求将该浮点数输出。给定非负整数m和n,表示输出的浮点数小数点前的宽度为m,若宽度不够则在前面补0,小数点后的宽度为n,若宽度不够则在后面补0(补充说明:当n=0时,只需输出整数部分,当m,n都为0时,则输出0)。

输入描述

每个测例共2行,第一行为两个整数m,n(n >= 0, m >= 0),第二行为一个浮点数。

输出描述

对每个测例输出的浮点数占一行,其小数点前宽度为m,小数点后宽度为n,不足时补零。

样例输入

5 3
12.3456789
2 10
12.34

样例输出

00012.345
12.3400000000

AC代码:

 #include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
using namespace std; int main(void)
{
int m, n;
double num; while (cin >> m >> n >> num)
{
if (m == && n == )
cout << << endl;
else
{
cout << setw(m) << setfill('') << int(num);
if (n != )
{
ostringstream os;
os << setiosflags(ios_base::fixed);
os << fixed << setprecision(n+) << num - int(num);
os << setiosflags(ios_base::fixed);
string str = os.str();
for (int i = ; i <= n+; i++)
cout << str[i];
}
cout << endl;
}
} return ;
}

这题其实是很磨砺人的题,因为题目里有意无意地挖了几个坑给我们(显然是有意的,测试数据表明了这一点。)

大概要注意这几点:

1、整数部分和小数部分的宽度格式控制一定要分开讨论,而不能笼统的用 setw(m+n) 支持限制整个数字的宽度。因为这样的控制不够精确,也就是存在这样的情况:当整数部分的宽度足够而小数部分的宽度不够时,小时部分可能找整数部分借了本不该属于自己的“宽度”。

2、利用 sstream 对把小数部分转换成字符串处理,避免输出小数点前面的0。

3、由于小数部分不是四舍五入的(从样例可以得知),所以这里用了一个小技巧,即每次多舍入一位(n+1),这样舍入情况不会影响到我们需要输出的最后一位小数,而输出字符串的时候输出到指定宽度n即可。

C++利用IO流对浮点数进行格式化控制输出的更多相关文章

  1. (16)IO流之输入字节流FileInputStream和输出字节流FielOutputStream

    IO流技术解决的问题:设备与设备之间的传输问题,内存-->硬盘,硬盘-->内存,等等 IO流技术 如果按照数据的流向划分可以划分为:输入流和输出流 输入输出的标准是以程序为参考物的,如果流 ...

  2. Java基础知识强化之IO流笔记14:递归之输出指定目录下所有java文件绝对路径的案例

    1. 需求:输出指定目录下的所以.java结尾文件的绝对路径的案例:  分析:  A:封装目录  B:获取该目录下的所有文件和文件夹的File数组  C:遍历这个File数组,得到每一个File对象的 ...

  3. Java基础知识强化之IO流笔记10:File类输出指定目录下指定后缀名的文件名称案例(File类的文件过滤器方法改进list( FilenameFilter ff))

    1. 案例: 判断F盘下是否有后缀名为.jpg的文件,如果有的话,就输出这个文件名. 2. 案例代码如下: (1)思路是:先获取所有的文件和文件夹封装的对象,然后遍历的时候,依次判断,如果满足条件就输 ...

  4. java IO流 对文件操作的代码集合

    Io流 按照分类 有两种分类 流向方向: 有输入流和输出流 按照操作类型有:字节流和字符流 按照流向方向 字节流的一些操作 //读文件 FileInputStream fis = new FileIn ...

  5. IO流对文件的读取操作

    /*1. 在当前项目的根目录下有一个名为“info.txt”的文件,里面存放的内容如下(可手动创建录入,不需要使用IO流): 2. 利用IO流的知识读取info.txt文件的内容, 在控制台上打印大写 ...

  6. IO流簡單代碼

    今天測試了一下,在博客園裏HTML源碼編譯器裏寫CSS内部樣式,更新編譯后,内部樣式可用,但是會將寫的内部樣式代碼强制加上代碼注釋進行編譯,有點類似于强制注入.編譯后的效果就是在前面加入了一個空的p標 ...

  7. Day_14【IO流】扩展案例3_对文本文件中的字符串内容进行反转

    分析以下需求,并用代码实现 项目根路径下有text.txt文件,内容如下 我爱黑马 123456 利用IO流的知识读取text.txt文件的内容反转后写入text.txt文件中 654321 马黑爱我 ...

  8. 详谈JAVA中的file类与IO流

    File类 位置于java.io包构造方法:File(String parent, String child)new file("d:\\","a.txt") ...

  9. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

随机推荐

  1. 268. Missing Number -- 找出0-n中缺失的一个数

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  2. 数组中的toString,toLocalString,valueOf方法有什么区别

    1. 2.简单来说,tostring就是用字符串来代替对象.tolocalstring就是根据不同的语言环境吧对象转成字符串,实际上totolocalstring是有缺省参数的,如tolocalstr ...

  3. NoSQL生态系统——一致性RWN协议,向量时钟,gossip协议监测故障

    13.5 一致性 在NoSQL中,通常有两个层次的一致性:第一种是强一致性,既集群中的所有机器状态同步保持一致.第二种是最终一致性,既可以允许短暂的数据不一致,但数据最终会保持一致.我们先来讲一下,在 ...

  4. MySql学习(三) —— 子查询(where、from、exists) 及 连接查询(left join、right join、inner join、union join)

    注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作 ...

  5. http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html(转载)(原作者:AstralWind)

      Python正则表达式指南   本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优 ...

  6. hello 漂亮的小靓仔

    <form type="text" name="超级" method="post"> <table align=" ...

  7. Android 中的常用方法

    //安装apk文件 private void installAPK(File file) {  Intent intent = newIntent(Intent.ACTION_VIEW);  Uri ...

  8. 高性能javascript(记录一)

    脚本位置:将js脚本放置在body底部,由于脚本会阻塞页面渲染,导致明显延迟,通常表现为空白页面,用户无法游览页面的内容,也无法与页面进行交互.故因此推荐js脚本放在body底部,尽可能减少对整个页面 ...

  9. anguar.js tutorial demo

    http://docs.angularjs.cn/tutorial angular 入门demo : PhoneCat Tutorial App 别人的DEMO(官方版):http://angular ...

  10. OC基础--类的本质

    类的本质: 类的本质其实也是一个对象(类对象),只要有了类对象, 将来就可以通过类对象来创建实例对象 程序中第一次使用该类的时候被创建,在整个程序中只有一份.此后每次使用都是这个类对象,它在程序运行时 ...