代码从网上找的,运行报错,但没找到错误在哪
#include "stdio.h"
int main()
{
double dSalary,dTax=0,dNetIncom=0;
double dValue;
printf("输入本月收入总额(元):");
scanf("%lf",&dSalary);
dValue=dSalary-3500;
if(dValue<=0.0)
dTax=0.0;
else
{
if(dValue<=1500)
dTax=dValue*0.03-0.0);
else
if(dValue<=4500)
dTax=dValue*0.10-105.0;
else
if(dValue<=9000)
dTax=dValue*0.20-555.0;
else
if(dValue<=35000)
dTax=dValue*0.25-1005.0;
else
if(dvalue<=55000)
dTax=dValue*0.30-2755.0;
else
if(dValue<=80000)
dTax=dValue*0.35-5505.0;
else
dTax=dValue*0.45-13505.0;
}
dNetIncome=dSalary-dTax;
printf("您本月应缴个人所得税%.2lf元,税后收入是%.2lf元。\n",dTax,dNetIncome);
return 0;
}
#include "stdio.h"
int main()
{
double dSalary,dTax=0,dNetIncom=0;
double dValue;
printf("输入本月收入总额(元):");
scanf("%lf",&dSalary);
dValue=dSalary-3500;
if(dValue<=0.0)
dTax=0.0;
else
{
if(dValue<=1500)
dTax=dValue0.03-0.0;
else
if(dValue<=4500)
dTax=dValue0.10-105.0;
else
if(dValue<=9000)
dTax=dValue0.20-555.0;
else
if(dValue<=35000)
dTax=dValue0.25-1005.0;
else
if(dValue<=55000)
dTax=dValue0.30-2755.0;
else
if(dValue<=80000)
dTax=dValue0.35-5505.0;
else
dTax=dValue*0.45-13505.0;
}
dNetIncom=dSalary-dTax;
printf("您本月应缴个人所得税%.2lf元,税后收入是%.2lf元。\n",dTax,dNetIncom);
return 0;
}
浮点数在内存中的存储有舍入误差,在计算机中用近似表示某个实数。比如,
double val1 = 4.0;
double val2 = 0.1;
double a = val1 - val2;
你认为a应该等于3.9,实际在计算机中它却是3.899999999999999999999。
所以不能用==来判断两个double是否相等,而是,
const double eps = 1e-8;
if(abs(a-b) <= eps) 相等
else 不相等