2014-12-13 87 views
-2

我在做什麼錯誤的數學?

{ 
     string EmploymentStatus = Convert.ToString(txtES.Text).ToLower(); 
     string UnionStatus = Convert.ToString(txtMS.Text).ToLower(); 
     double TotalSales = Convert.ToDouble(txtSales.Text) * 9.25; 
     double Years = Convert.ToDouble(txtYears.Text);   
     double uniondues; 
     double FICA = 0; 
     double bonus = 0; 
     double WPay = 0; 
     double TotalComission = 0; 

     if (EmploymentStatus == "full") 
     {     
      WPay = 800.00; 
     } 
     else if (EmploymentStatus == "part") 
     { 
      WPay = 200.00; 
     } 
     else 
     { 
      MessageBox.Show("Error, please enter either FULL or PART"); 
     } 

      if (UnionStatus == "member") 
      { 
       uniondues = 5.25; 
       WPay = WPay - uniondues; 
      } 
      else if (UnionStatus == "non-member") 
      { 
       uniondues = 0; 
      } 
      else 
      { 
       MessageBox.Show("Error, please enter either MEMBER or NON-MEMBER"); 
      } 
      if ((EmploymentStatus == "full") && (TotalSales > 640)) 
      { 
       bonus = TotalSales * .05; 

      } 
      else if (EmploymentStatus == "part") 
      { 
       bonus = 0; 
      } 
      if (Years >= 10) 
      { 
       TotalComission = TotalSales * .10; 

      } 
      else if (Years < 10) 
      { 
       TotalComission = TotalSales * .05; 

      } 
      else 
      { 
       MessageBox.Show("Error, please enter a valid number"); 
      } 


      FICA = WPay * .16; 
      WPay = WPay - FICA; 


     lblqWPay.Text = "The weekly pay for the employee is: " + (WPay.ToString("C")); 
     lblqTS.Text = "The total sales for this employee is: " + (TotalSales.ToString("C")); 
     lblqCom.Text = "The comission for this employee is: " + (TotalComission.ToString("C")); 
     lblqBonus.Text = "The bonus for this employee is: " + (bonus.ToString("C")); 

當我進入工作狀態爲「FULL」和工會的地位,「成員」,以作爲「100」出售的數量,以及這些年來使用的私人無效btnDisplay_Click(對象發件人,EventArgs的)如「25」。每週的工資應該是「$ 783.30」。但我最終得到了667.59美元的產出。我看不出我做錯了什麼。

下面是必須遵循的準則:

全職代表在$ 20.00每小時 兼職代表每週工作20小時率每週工作四十小時的$ 10.00速度在每小時 一些代表屬於工會,每週支付工會會費5.25美元 如果代表工作10年或以上,他們將獲得10%的銷售佣金,否則他們將獲得銷售額的5%的佣金 小部件售價爲9.25美元 如果全職員工的銷售額超過其基本工資的80%,他們有權獲得銷售額的5%的獎金 Al l代表根據其總收入支付16%的FICA稅款

P.S.我知道這是很多閱讀,但如果你能幫助我,這對我來說就像是一場聖誕奇蹟。

+1

調試器?試試吧,很好。 – MarcinJuraszek 2014-12-13 02:15:38

+2

使用調試器,單步執行代碼,查看每個中間結果。將每個結果與您認爲在當時的正確結果進行比較。當你發現兩者不一樣的聲明時,你已經發現了你的bug(這將在代碼中或者在你的規範中)。 – 2014-12-13 02:16:55

+0

哈哈我已經試過了,我不小心將錯誤粘貼到論壇。 smdh。但無論如何,它仍然出現錯誤,我已經添加Wpay = wpay +獎金,wpay = wpay +總佣金;而最接近我得到它是784.14。 idk還有什麼不對,數學是正確的。但idk – SprJD7903 2014-12-13 02:28:23

回答

1

你的計算是基於關閉的工會會費...
顯然,拿到783.30的薪酬,工會會費被扣除FICA稅施加後...

800.00 (base) 
+ 46.25 (5% bonus when over 80% base) 
+ 92.50 (10% commission on 925 sales) 
======= 
938.75 
-150.20 (16% FICA) 
======= 
788.55 Net pay before union dues 
- 5.25 (union) 
======= 
783.30 

private void btnDisplay_Click(object sender, EventArgs e) 
{ 
    string EmploymentStatus = Convert.ToString(txtES.Text).ToLower(); 
    string UnionStatus = Convert.ToString(txtMS.Text).ToLower(); 
    double TotalSales = Convert.ToDouble(txtSales.Text) * 9.25; 
    double Years = Convert.ToDouble(txtYears.Text);   
    double uniondues = 0; 
    double FICA = 0; 
    double bonus = 0; 
    double WPay = 0; 
    double TotalComission = 0; 


    if (EmploymentStatus == "full") 
    { 
     WPay = 800.00; 
     // since already in full-time status check, compute bonus here now. 
     // based on 80% of base pay 
     if (TotalSales > WPay * .80) 
     bonus = TotalSales * .05; 
    } 
    else if (EmploymentStatus == "part") 
     WPay = 200.00; 
    else 
     MessageBox.Show("Error, please enter either FULL or PART"); 

    // Only if qualified full/part time status 
    if(WPay > 0) 
    { 
     if (UnionStatus == "member") 
     uniondues = 5.25; 
     else if (UnionStatus == "non-member") 
     uniondues = 0; 
     else 
     MessageBox.Show("Error, please enter either MEMBER or NON-MEMBER"); 

     if (Years >= 10) 
     TotalComission = TotalSales * .10; 
     else if (Years < 10) 
     TotalComission = TotalSales * .05; 
     else 
     MessageBox.Show("Error, please enter a valid number"); 


     // NOW, build out the total pay before computing FICA 
     WPay = WPay + bonus + TotalComission; 

     // NOW Compute FICA 
     FICA = WPay * .16; 

     // and remove FICA and Union dues from gross pay to get net pay 
     WPay = WPay - FICA - uniondues; 
    } 

    lblqWPay.Text = "The weekly pay for the employee is: " + (WPay.ToString("C")); 
    lblqTS.Text = "The total sales for this employee is: " + (TotalSales.ToString("C")); 
    lblqCom.Text = "The comission for this employee is: " + (TotalComission.ToString("C")); 
    lblqBonus.Text = "The bonus for this employee is: " + (bonus.ToString("C")); 
} 
+0

謝謝你,我把uniondues移到了代碼的底部,現在一切都是桃色......我需要關注的細節層次是令人興奮的。我真的不認爲解決方案很簡單。我真的很感謝幫助。 – SprJD7903 2014-12-13 04:36:02

+0

@ SprJD7903,不客氣,就是這樣,因爲聯邦政府需要儘可能多的錢。聯盟會費就像是後付款購買,工會會費的減少降低了薪酬基礎,從而減少了山姆大叔的稅收。 – DRapp 2014-12-13 14:18:33

0

根據我的計算,783.30的值是錯誤的。手工數學:

(800(base) - 5.25(union)+ 92.5(commision)+ 46.25(bonus))* .84(tax)= 784.14。除非薪水與您提到的指南有所不同,否則您的計劃運行正常,而舊的計劃錯誤。