2014-02-13 54 views
1

我想在C#中將我的輸出四捨五入到2位小數。我的代碼工作正常,它將我想要的內容寫入我的標籤,但拒絕將其舍入爲2位小數。誰能幫我這個?評論math.round代碼是我試過的沒有錯誤。它不適合我。Math.Round在C#中的標籤

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     double input; 
     double number = 0.484; 
     double output; 
     input = Convert.ToDouble(textBox1.Text); 
     output = Convert.ToDouble(input/number); 
     label1.Text = output.ToString(); 
     //output = Math.Round(output, 2); 
     //Math.Round(output, 2); 
    } 
    catch 
    { 
     // Do nothing 
+1

1)'ToString'採用可用於顯示兩位數的格式字符串2)如果您關心實際數字中的小數位數,請考慮在'double'上使用'decimal'。 3)你是否真的在'output'之前從'output'分配給'label1.Text'?這是行不通的。 – CodesInChaos

回答

4

在您將預先取整值設置爲標籤後,對輸出進行四捨五入爲時已晚。您需要首輪值,然後將其設置,如下所示:

label1.Text = Math.Round(output, 2).ToString(); 

然而,四捨五入爲顯示目的不是做事情的最好方法:你會更好的價值格式化到小數點後兩位。

+0

不可以,只有'output'是一個'decimal'時才起作用。 – Luaan

+1

@Luaan它通常甚至可以雙打(雖然它不打印尾隨零),但通常是一個壞主意。對於'Math.Round(double,digits)'的任何調用都是代碼中的一個缺陷,就我而言。 – CodesInChaos

+1

據此它將工作http://msdn.microsoft.com/en-us/library/75ks3aby%28v=vs.110%29.aspx – Srb1313711

2

你可以這樣做讓2位小數

label1.Text = string.Format("{0:N2}%", output.ToString()); 
3

你應該寫的格式輸出:

label1.Text = output.ToString("N2"); 

或者,如果你不想CultureInfo千位分隔符:

label1.Text = output.ToString("0.00"); 
0

試試這個:

label1.Text = output.ToString("#.##"); 

更改此聲明它將正常工作。