C语言,个税计算器,不知道代码哪错了

代码从网上找的,运行报错,但没找到错误在哪


#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=dValue
0.10-105.0;
else
if(dValue<=9000)
dTax=dValue0.20-555.0;
else
if(dValue<=35000)
dTax=dValue
0.25-1005.0;
else
if(dValue<=55000)
dTax=dValue0.30-2755.0;
else
if(dValue<=80000)
dTax=dValue
0.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 不相等