
求解 为什么输入234000 switch输出为19200 而if输出的却为20050

不能使用连续比较:1<I<5这种写法
#include <stdio.h>
int main() {
float bonus,I;
// printf("请输入当月利润:");
scanf("%f",&I);
switch ((int) I / 100000) {
case 0:
bonus = I * 0.1;
break;
case 1:
bonus = 0.1 * 100000 + 0.075 * (I - 100000);
break;
case 2:
case 3:
bonus = 0.1 * 100000 + 0.075 * 100000 + 0.05 * (I - 200000);
break;
case 4:
case 5:
bonus = 0.1 * 100000 + .075 * 100000 + 0.05 * 200000 + 0.03 * (I - 400000);
break;
case 6:
case 7:
bonus = 0.1 * 100000 + 0.075 * 100000 + 0.05 * 200000 + 0.03 * 200000 + 0.015 * (I - 600000);
break;
case 8:
case 9:
case 10:
bonus = 0.1 * 100000 + 0.075 * 100000 + 0.05 * 200000 + 0.03 * 200000 + 0.015 * 400000 + 0.01 * (I - 1000000);
}
printf("%5.2lf", bonus);
return 0;
}
#include <stdio.h>
int main()
{
double I,a;
scanf("%lf",&I);
if(I<=100000)a=0.1*I;
else if(100000<I&&I<=200000)
a=0.1*100000+0.075*(I-100000);
else if(200000<I&&I<=400000)
a=0.1*100000+0.075*100000+0.05*(I-200000);
else if(400000<I&&I<=600000)
a=0.1*100000+0.075*100000+0.05*200000+0.03*(I-400000);
else if(600000<I&&I<=1000000)
a=0.1*100000+0.075*100000+0.05*200000+0.03*200000+0.015*(I-600000);
else if(I>1000000)
a=0.1*100000+0.075*100000+0.05*200000+0.03*200000+0.015*400000+0.01*(I-1000000);
printf("%5.2f",a);
return 0;
}