题目
题目描述
老师在黑板上写出n个数,这些数有的是小数(即浮点数),有的是整数。
你表示能够在一秒钟内算出这些数的和, 并且给结果保留k位小数。
输入格式
第一行为一个正整数 n ( n ≤ 10000 ) n(n≤10000) n(n≤10000)和一个非负数 k ( k < 9 ) k(k < 9) k(k<9)
接下来n行,每一行给出一个不大于1000的非负数,这些数可能是整数,也可能是浮点数(小数位数不大于8)
输出格式
按着题目输出一个数,表示正确答案。
题解
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,k;
double res,t;
cin >> n >> k;
res = 0;
for(int i = 0;i < n;i++){
cin >> t;
res += t;
}
cout << fixed << setprecision(k) << res << endl;
return 0;
}
这道题比较简单,只要知道使用setprecision
函数便基本没什么问题。
需要注意的是,使用setprecision
进行小数点位数保留时,别忘了在其前面加上fixed
。否则会变成保留有效数字。
cout << fixed
也可以写成 cout.setf(fixed);
详情可参看:cout.setf()
原创不易,感谢支持。