2012-10-22 23 views
0

所以我試圖從類方法返回一個帳單的總成本到文本框中的十進制值。從類方法可能的解析錯誤

該類方法如下所示:

public decimal calcCost(decimal totalCost, bool specialistRepair, decimal labourHours,  decimal standardRate, decimal partSaleCost) 
    { 

     foreach (Job j in m_jobs) 
     { 
      if (specialistRepair == true) 
      { 
       totalCost = totalCost + 45; 
      } 

      totalCost = totalCost + partSaleCost + (labourHours * standardRate); 
     } 

     return totalCost; 
    } 

我遇到的問題是,它說「不能隱comvert類型」小數‘串’。

我試過解析'='符號後的整行,但這是不可能的。

txtTotal.Text = //Here// Program.AuspexDo.calcCost(0, checkSpecialist, jobHours, standardRate, partSaleCost); 

的代碼主要如下所示:

 bool checkSpecialist = true; 
     if (chkSpecialistRepairs.Checked == true) 
     { 
      checkSpecialist = true; 

     } 

     decimal jobHours = decimal.Parse(txtHours.Text); 
     decimal standardRate = Program.AuspexDo.StandardRate; 
     decimal partSaleCost = 5; //to be configured 



     txtTotal.Text = Program.AuspexDo.calcCost(0, checkSpecialist, jobHours, standardRate, partSaleCost); 

如果有人可以幫助將不勝感激。謝謝。

+0

發佈錯誤。 –

+0

我有'不能隱式地轉換類型'十進制到'字符串'。'我會更加清楚 – Wizard

+0

我會將「m_jobs」傳遞給該方法,而不是修改參數「totalCost」並返回該修改後的值,而是使用本地小數計算 - 但.ToString()是真正的問題(你可能需要格式化小數點, –

回答

2

將其更改爲

txtTotal.Text = Program.AuspexDo.calcCost(0, checkSpecialist, jobHours, standardRate, partSaleCost).ToString(); 
+0

哦,哇,我不會想到這樣做,它沒有顯示錯誤,我會檢查它是否做我想要的 – Wizard

+0

謝謝,明白了。謝謝你的回覆。 – Wizard

+0

沒問題,很高興幫助。 –

1

calcCost返回decimal和您要指定返回值txtTotal.Text,這是string型。

正如錯誤說,有兩個之間沒有轉換 - 你需要的返回值轉換爲string第一 - 的方式做到這一點是調用的返回值ToString()

txtTotal.Text = Program.AuspexDo.calcCost(0, 
              checkSpecialist, 
              jobHours, 
              standardRate, 
              partSaleCost) 
              .ToString(); 

請查看customstandard數字格式字符串以及有關composite format strings的信息,因爲您可能希望輸出爲特定格式。

相關問題