税后工资计算器返回的金额不正确

时间:2017-05-21 02:34:15

标签: c rounding

我正在开设一个项目,让我计算总薪水,加班费和税后净工资。低于600美元的任何东西的税率为15%,超过600美元的税率为20%。我相信我的所有计算都是正确的;但是,当我运行该程序时,它给了我不正确的答案。当我输入45小时工资和15.25美元工资时,我应该得到724.38美元的总工资和659.26美元的净工资。相反,我将返回712.50美元的净工资和645.00美元的净工资,这是相当奇怪的。

#include<stdio.h>

int main(void){

    int hoursWorked, hourlyWage;
    float grossPay, netPay, overHours;

    printf("Please input number of hours worked. ");
    scanf(" %i", &hoursWorked);

    printf("Please input your hourly wage. ");
    scanf(" %i", &hourlyWage);

    if(hoursWorked <= 40){
        grossPay = hourlyWage * hoursWorked;
    }
    else{
        if(hoursWorked > 40){
            overHours = hoursWorked - 40;
            grossPay = (overHours * (hourlyWage * 1.5)+ (hourlyWage * 40));
        }
    }
    if(grossPay <= 600){
        netPay = (grossPay - (grossPay * .15));
    }
    else{
        if(grossPay > 600){
            netPay = (grossPay - (600 * .15) + ((grossPay - 600) * .2));
        }
    }
    printf("Your gross pay was $%.2f", grossPay);
    printf("\nAnd your net pay was $%.2f after taxes", netPay);

    return 0;
}

1 个答案:

答案 0 :(得分:2)

int hoursWorked, hourlyWage;
     

15.25美元的工资

您的int变量无法容纳15.25。 scanf格式代码%i不会读取小数。

因此,你所有的计算工资都是15,而不是15.25。

如果您已经完成了最简单的调试,无论是使用真正的调试器还是设置变量监视,或者只打印出每个变量的结果,您都可以自己轻松找到它。学会调试。