求教:关于赋值float变量后,运行时变量值不对的问题
程序代码:
/* 企业发放的奖金根据利润提成。利润(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,求应发放奖金总数? */ #include<stdio.h> int main() { int i; float sum=0,a=0.1,b=0.075,c=0.05,d=0.03,e=0.015,f=0.01; scanf("%d",&i); if (i<=100000) { sum=(i*0.1); } else if (i>100000&&i<=200000) { sum=(i-100000)*b+100000*0.1; } else if (i>200000&&i<=400000) { sum=(i-200000)*d+(200000-100000)*b+100000*0.1; } else if (i>400000&&i<=600000) { sum=(i-400000)*d+(400000-200000)*d+(200000-100000)*b+100000*0.1; } else if (i>600000&&i<=1000000) { sum=(i-600000)*e+(600000-400000)*d+(400000-200000)*d+(200000-100000)*b+100000*0.1; } else if (i>1000000) { sum=(i-1000000)*f+(1000000-600000)*e+(600000-400000)*d+(400000-200000)*d+(200000-100000)*b+100000*0.1; } printf("%7.2f",sum); return 0; }
以上代码运行时,得到的结果错误,通过调试发现a、b、c、d、e、f几个变量已经和初始值不同,请问是因为什么?
a 0.100000001 float
b 0.0750000030 float
c 0.0500000007 float
d 0.0299999993 float
e 0.0149999997 float
f 0.00999999978 float