神奇的搬运工
2021-10-14 23:14
采纳率: 50%
浏览 20

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;
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 開心就好う 2021-10-15 09:51
    已采纳

    #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;
    }

    已采纳该答案
    打赏 评论
  • 神仙别闹 2021-10-14 23:51

    浮点数在内存中的存储有舍入误差,在计算机中用近似表示某个实数。比如,

    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 不相等
    
    打赏 评论

相关推荐 更多相似问题