您的位置:首页 > 其它

蓝桥杯模拟题还款计算

2017-04-06 22:25 197 查看
这题一开始觉得并不复杂,想着double可以自动四舍五入不用太操心,结果经过这一题我才知道原来浮点数的四舍五入不稳定

#include<stdio.h>
#include<algorithm>
using namespace std;
double sw(double x)
{
int y=(x+0.005)*100;
return y/100.0;
}
int main()
{
double r;
int n;
scanf("%lf %d",&r,&n);
double money=1.0*10000/n;
money=sw(money);
double minn=100000;
double ans;
printf("%lf\n",money);
for(money;;money=money+0.01)
{
double sum=10000;
for(int i=1;i<=n;i++)
{
sum=sum+sum*(r*0.01/12)-money;
sum=sw(sum);
// printf("%lf\n",sum);
}
printf("%lf %lf\n",sum,money);
if(sum<0)
{
if(-sum<minn)
{
printf("%lf %lf\n",sum,minn);
ans=money;
printf("%lf %lf\n",ans,money);
}
break;
}
minn=min(minn,sum);
ans=money;
}
ans=sw(ans);
printf("%lf %d %d\n",ans,(int)(ans*100),(int)(ans*100000));
}
最终还是无解,,,那个浮点数的输入输出一直有问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: