2017-05-21 12 views
-2

私は、総額、残業手当、税金控除後の純賃金を計算するクラスのプロジェクトに取り組んでいます。 $ 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; 
} 

答えて

2
int hoursWorked, hourlyWage; 

あなたint変数は15.25を保持することはできません$ 15.25

の賃金。 scanfフォーマットコード%iは小数点以下を読み取らない。

したがって、すべての計算は15.25ではなく15の賃金で行われています。

実際のデバッガを使って変数監視を設定するか、各変数の結果を出力するだけで簡単にデバッグできたら、簡単にこれを見つけることができます。デバッグを学ぶ。

+0

ありがとうございました。それを修正するために私は何を使うでしょうか? – RLuck

+0

@ user3225965: 'grossPay'のように分数値を保持している他の変数があります。違いは?どのデータ型について学んだのですか? –

関連する問題