求教:关于赋值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








