C++:浮点数输出(流类库的输入与输出)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haut_ykc/article/details/86582716

浮点数输出

 

(100/100 分数)

题目描述

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


输入描述

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


输出描述

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

 


样例输入

 

扫描二维码关注公众号,回复: 5090680 查看本文章
5 3
12.3456789
2 10
12.34


样例输出

00012.345
12.3400000000


 

#include<iostream>
#include<sstream>
#include<iomanip>
#include<string>
using namespace std;
int n,m;
double a;
int main(void)
{
	while(cin >> m >> n >> a)
	{
		if(m==0 && n==0)
			cout << 0 << endl;
		else
		{
			cout << setw(m) << setfill('0') << int(a);
			if(n!=0)
			{
				ostringstream os;//从字符串中输出
				os << setiosflags(ios_base::fixed);//左对齐
				os << fixed << setprecision(n+1) << a-int(a);
				//这里的n+1是为了避免四舍五入带来的问题,因为样例明显不是四舍五入规则的
				os << setiosflags(ios_base::fixed);
				string str=os.str();
				for(int i=1;i<=n+1;i++)
					cout << str[i];
			}        
			cout << endl;   
		}   
	}
	return 0;    
}

猜你喜欢

转载自blog.csdn.net/haut_ykc/article/details/86582716