2013-07-31 39 views
4

我已經得到了這個代碼,它計算了datagridview中所有行的2個乘積列的總結。結果c中的小數位#

private void vypocti_odvody(int price, int vat, int tot_rows2) 
    { 
     try 
     { 
      double outVal = 0; 
      foreach (DataGridViewRow row in dataGridView1.Rows) 

      { 
       outVal = outVal + (Convert.ToDouble(row.Cells[price].Value)/100) * Convert.ToDouble(row.Cells[vat].Value) + (Convert.ToDouble(row.Cells[price].Value)); 
      } 

     // s_ub_celk.Text = (((a/100) * b) + a).ToString(); 
      Convert.ToDecimal (result.Text = outVal.ToString()) ; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Chybové hlášení K3 " + ex.Message.ToString()); 
     } 


    } 

如何提高小數位數?現在結果是這樣的:123,5484250我想只有2個小數位,結果例如123,55。

對不起,我可憐的英語我希望'小數位'是表達我真正的意思。如果我爲了更好的理解做了一個例子。

謝謝大家的時間,評論和答案。

+0

通常有一個'Format'屬性可以設置爲'0.00'。 – Joey

回答

2

使用格式字符串將文本轉換:

result.Text = outVal.ToString("0.00"); 

有關如何格式化數字更多的方式請參見this list。您也可以使用

result.Text = string.Format("{0:0.00}", outVal); 

這與上面的代碼完全相同。

+0

爲什麼使用double格式的字符串格式以及何時知道string.format被截斷了數字。 – 3wic

+0

@ 3wic:「0.00」會將數字四捨五入到小數點後第二位。在你的解決方案中,你可能會因爲浮點錯誤而得到不同的結果,而'string.Format'對字符串表示本身起作用,而不是數字。 – pascalhein

+0

@ 3wic:請參閱[這個ideone](http://ideone.com/YzGX2z)OP的例子舍入。 – pascalhein

2

您可以使用Math.Round(value, digits)

的價值是你的結果和數字是多少小數想

4

由於您使用DataGridView可以設置單元格的格式一樣

DataGridView1.Columns[required column index or name].DefaultCellStyle.Format = "N2" 
1

使用System.Globalization.NumberFormatInfo來控制設置。

System.Globalization.NumberFormatInfo numberFormatInfo = new System.Globalization.NumberFormatInfo();   
numberFormatInfo.NumberDecimalDigits = 2; 

decimal decimalexample = 123.5484250M; 

string decimalasstring = decimalexample.ToString(numberFormatInfo); 

問候。