0
已解决
0
已采纳
把
if((printf("%.0f",int(cnt*1+0.5)/1.0))<0.5)
printf("%.1f",cnt);
else
printf("%.0f",cnt+0.5);
改成
if(cnt<=int(cnt)+0.5)
printf("%.1f",cnt);
else
printf("%.1f",cnt+0.5);
0
首先看数据范围,建议用long double;
用long double定义一个变量后(注意清零),还要用int定义三个变量(假设为a,b,c);
最后拿3.3*a+5.0*b+8.4*c;
然后再判断保留一位小数后的小数部分,小数位不足0.5元的都不收,小数位多于或等于0.5元但是不足1元的,只收0.5元。
0
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
long double cnt=0;
cin>>a>>b>>c;
cnt=3.3*a+5.0*b+8.4*c;
if((printf("%.0f",int(cnt*1+0.5)/1.0))<0.5)
printf("%.1f",cnt);
else
printf("%.0f",cnt+0.5);
return 0;
}
哪里错了
0
核心代码:
if(s-x<0.5) cout<<x<<".0"; else if(s-x>=0.5) cout<<x<<".5";
其中s是double,x是long long int.
0