洛谷 P2393 yyy loves Maths II

在这里插入图片描述
思路:直接进行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;
}
发布了99 篇原创文章 · 获赞 44 · 访问量 5541

猜你喜欢

转载自blog.csdn.net/weixin_44413191/article/details/102535988
今日推荐