思路:直接进行sum+=a时,浮点数的精度会发生变化。应将其转换为整数后再相加
#include<bits/stdc++.h>
using namespace std;
int main()
{
long double a,sum=0;
while (cin >> a)
sum += a*1000000;//去除小数部分,提高运算精度
cout << fixed << setprecision(5) << sum/1000000;
return 0;
}
不使用循环的方法,主函数也可以递归调用:
#include<bits/stdc++.h>
using namespace std;
long double a, sum;//long double 保证精度
int main()
{
if (cin >> a){
sum += a * 1000000;//去除小数部分,直接乘,变成整数
main();//核心代码
}
else cout << fixed << setprecision(5) << sum / 1000000;//除回来
return 0;
}