一个简单c语言程序输出的问题
#include"stdio。h"main() { long i; float bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0。1;bonus2=bonus1+100000*0。
75; bonus4=bonus2+200000*0。5; bonus6=bonus4+200000*0。3; bonus10=bonus6+400000*0。15; if(i<=100000) bonus=i*0。1; else if(i<=200000) bonus=bonus1+(i-100000)*0。
075; else if(i<=400000) bonus=bonus2+(i-200000)*0。05; else if(i<=600000) bonus=bonus4+(i-400000)*0。03; else if(i<=1000000) bonus=bonus6+(i-600000)*0。
015; else bonus=bonus10+(i-1000000)*0。01; printf("bonus=%。2f\n",bonus); } 验证过了,输出没错输入120000,输出11500。
程序运算的时候结果都会进行取整的,你的bonus?等变量都用的整型,每次运算都要取整,结果就可能会有误差。建议把他们都定义为float型,输出时用printf("bonus=%d",(int)bonus); 这样问题基本就解决了。如果还有问题,那就是你用的数的数值都过大,float型已经不能满足了,换为double后问题肯定可以解决的。