2014-12-13 1 views
-2

частная пустота btnDisplay_Click (объект отправителя, EventArgs е)Что я делаю неправильно с математикой?

{ 
     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», и годы используется как «25». Еженедельная заработная плата должна составлять «$ 783,30». Но в конечном итоге я получаю $ 667,59 за выпуск. Я не вижу, что я делаю неправильно.

Вот руководящие принципы, которые должны следовать:

Полные представителей рабочего времени 40 часов в неделю в размере $ 20,00 в час представителей Неполных работать 20 часов в неделю в размере $ 10,00 в час Some представители принадлежат профсоюзу и платят 5,25 долл. США в неделю в профсоюзных сборах Если представитель проработал 10 лет и более, они получают комиссию в размере 10% от продаж, в противном случае они получают комиссию в размере 5% от продаж Виджеты на продажу за 9,25 долл. США Если полный рабочий день имеет продажи, которые составляют более 80% от их базовой платы, они имеют право на бонус в размере 5% от их продаж. Al l представители выплачивают налог на FICA в размере 16% исходя из их общей прибыли

P.S. Я знаю, что это много, но если вы можете помочь мне с этим, это будет похоже на рождественское чудо для меня.

+1

Debugger? Попробуй, это хорошо. – MarcinJuraszek

+2

Используя отладчик, пройдите через код, глядя на каждый промежуточный результат. Сравните каждый результат с тем, что, по вашему мнению, должно быть правильным результатом в этот момент. Когда вы достигнете утверждения, в котором эти два варианта не совпадают, вы нашли свою ошибку (которая будет либо в коде, либо в вашей спецификации). –

+0

Ха-ха, я пробовал это, я случайно вставил не то, что делает на форум. smdh. но, несмотря на это, он все еще ошибается, я добавил Wpay = wpay + bonus ;, wpay = wpay + total Commission ;, и ближайший я получаю его до 784.14. idk, что еще не так, математика правильная. но idk – SprJD7903

ответ

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

+0

@ SprJD7903, Добро пожаловать, и это так, потому что федеральное правительство хочет столько денег, сколько может получить. Объединенные взносы - это как покупка после оплаты, и сокращение платы за профсоюзные взносы уменьшает плату и, следовательно, меньше налогов для дяди Сэма. – DRapp

0

Значение 783.30 неверно по моим расчетам. Выполнение математической задачи:

(800 (основание) - 5.25 (союз) + 92.5 (комиссия) + 46.25 (бонус)) *. 84 (налог) = 784.14. Если оплата не определяется иначе, чем руководство, о котором вы упоминали, ваша программа работает правильно, а старая ошибка.

Смежные вопросы