#企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成, 高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
第一种:
pro = float(input("请输入当月利润(单位:万):"));
sal=0;
if pro-10>0:
sal=10*0.1;
if(pro-20>0):
sal=sal+10*0.075;
if(pro-40>0):
sal=sal+20*0.05
if(pro-60>0):
sal=sal+20*0.03
if(pro-100>0):
sal=sal+40*0.015+(pro-100)*0.01
else:
sal=sal+(pro-60)*0.015
else:
sal=sal+(pro-40)*0.03
else:
sal=sal+(pro-20)*0.05
else:
sal=sal+(pro-10)*0.075
else:
sal=pro*0.1
print("奖金数为:",sal,"万");
执行结果如下(输入79也有问题):
!
打断点执行,发现在这一步执行sal=sal+(pro-60)*0.015发生误差,为什么?
第二种:
i =pro;
arr = [100,60,40,20,10,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
if i>arr[idx]:
r+=(i-arr[idx])*rat[idx]
#print((i-arr[idx])*rat[idx])
i=arr[idx]
print(r);
输入68,第二种计算方法也出现误差
这种误差是为什么,为什么会发生,怎么避免?