2012-06-26 59 views
7

嗨,我是提前一個C#新手會有人禮貌地告訴我如何這段代碼的值轉換爲雙/圓小數..感謝將翻一番,達到小數點後兩位

DataTable dtValues = new DataTable("GetValues"); 

strValueNumber = ValueNumber[0].ToString(); 
dtGetValues = SQLMethods.GetValues(strValueNumber); 

total = 0; 

for (int i = 0; i < dtValues.Rows.Count; i++) 
{ 
    total1 = total1 + Convert.ToInt32(dtGetValues.Rows[i]["total_1"]);     
    total2 = total2 + Convert.ToDouble(dtGetValues.Rows[i]["total_2l"]) * .45; 

    tbtotal1.Text = total1.ToString(); 
    tbtotal2.Text = total2.ToString(); 
} 
}    
catch (Exception ex) 
{ 
    MessageBox.Show("Error in returning selected Values. " + 
        "Processed with error:" + ex.Message); 
} 
} 
+0

您應該設置循環外的文本框。 'total'被聲明但未被使用。循環前應將total1和total2設爲零。 – MiMo

回答

11

使用Math.Round

Math.Round(mydoublevalue, 2); 

在你的代碼

tbtotal2.Text = Math.Round(total2, 2).ToString(); 
+0

感謝您的幫助....我會嘗試這個 – user1483145

+0

@ user1483145:另外,正如你所說你是一個新手,可能值得指出的.net和因此C#有一個數據類型稱爲「小數」,是表示十進制數比「double」更準確。 –

+0

謝謝philip .. – user1483145

1

像這樣做。

tbtotal1.Text = Math.Round(double.Parse(total1.ToString()), 2).ToString(); 
tbtotal2.Text = Math.Round(double.Parse(total2.ToString()), 2).ToString(); 
+0

糾正了我的錯誤。 – Adil

4

如果只想四捨五入以顯示爲一個字符串值,你也可以使用String.Format

tbtotal1.Text = String.Format("{0:0.##}", total1); 

文本「{0:0。##}」描述了您希望如何對其進行格式化。 #表示不應該包含結尾零(例如,1.2保留字符串「1.2」),如果您改爲「{0:0.00}」,則無論包含什麼內容,都會包含兩位小數,因此double 1.2將變爲「1.20 」。

0

inputValue = Math.Round(inputValue,2);

+1

你能否詳細解釋一下你的答案? –

2

我的答案很遲,但對於那些有像我誰希望:

轉換爲加倍/十進制和也希望值總是顯示小數點後2位(.00)String

tbtotal2.Text = Math.Round(total2, 2).ToString("#.00"); 

下面的意思是在任何時候都有兩位小數。

"#.00" 

如果有值,下面的意思是兩位小數。

"#.##" 
相關問題