浮点数输出

浮点数输出

浮点数输出  (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

 
 
 
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
using namespace std;
 
int main() {
int m, n;string d;
cin >> m >> n >> d;
//cout << d << endl;
string s;
s = d.substr(0, d.find('.') + n + 1);
//cout << s<< endl;
istringstream is(s);  //创建字符串输入流
double v;
is >> v;    //从字符串输入流中读取变量v
//cout << v << endl;
if (m == 0 && n == 0) cout << 0 << endl;
else { 
if(n==0) cout << setw(m) << setfill('0') << int(v);
else cout << setiosflags(ios_base::fixed) << setw(m + n + 1) << setfill('0') << setprecision(n) << v << endl;
}
 
 
return 0;
}
 
 
 
 
 
这题的难点主要在于:
1.在没有设置过是科学计数法还是浮点数setiosflags(ios_base::fixed)表示之前,设置精度setprecision(n)是有效位数的意思;而在设置了之后,则是小数点后保留多少位的意思~~
2.在设置过浮点数setiosflags(ios_base::fixed)表示后,再设置精度setprecision(n)小数点后保留多少位就会是四舍五入式的保留了,而此题不能是四舍五入,所以我的解决方法是:先把它按字符串输入,然后截取所需要的长度后,再转成double,设置格式输出~~
 

浮点数输出》上有3条评论

  1. Pingback引用通告: BZ编程小组 作品 | BZ编程小组

  2. Pingback引用通告: 清华mfc大作业 | BZ编程小组

  3. Pingback引用通告: char[]转CString | BZ编程小组

发表评论

电子邮件地址不会被公开。 必填项已用*标注