printf 的 %lf 只有在g++4.8及以上才支持,这里记录一下通过cout控制输出精度的方式:
头文件:<iomanip>
方法:setprecision(i),i为总的显示位数,如需控制精度,则在之前加上fixed,此时i表示小数点后位数。
题目来自:http://poj.org/problem?id=1862
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;
double record[105];
bool cmp(const double a, const double b) {
return a > b;
}
int main() {
int n;
while (cin >> n) {
for (int i = 0; i < n; i++) {
cin >> record[i];
}
sort(record, record+n, cmp);
for (int i = 0; i < n-1; i++) {
record[i+1] = 2*sqrt(record[i]*record[i+1]);
}
cout << fixed << setprecision(3) << record[n-1] << endl;
}
}