int fun(int i)
{
int y;
if(i<=100000) y=0.1*i;
if(i>=100000&&i<=200000) y=100000*0.1+(i-100000)*0.075;
if(i>=200000&&i<=400000) y=100000*0.1+100000*0.075+(i-200000)*0.05;
if(i>=400000&&i<=600000) y=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;
if(i>=600000&&i<=1000000) y=100000*0.1+100000*0.075+200000*0.05+400000*0.03+(i-600000)*0.015;
if(i>=1000000) y=100000*0.1+100000*0.75+200000*0.05+400000*0.03+400000*0.015+(i-1000000)*0.01;
return y;
}
int main( )
{
int i;
scanf("%d",&i);
printf("bonus=%d",fun(i));
NONO (i);
return 0;
}
打人140000为什么输出的结果是12999
这是浮点数运算的问题,浮点数用二进制存储会出现精度损失的问题,可以将0.075换为0.075*1000/1000
这个代码就不对,应该是if ...else if ... else if ....