2012-06-26 8 views
7

Ciao io sono aC# novizio avrebbe qualcuno gentilmente dirmi come convertire i valori di questo pezzo di codice per un doppio decimale/arrotondata .. grazie in anticipoconversione di raddoppiare con due cifre decimali

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

È consigliabile impostare le caselle di testo all'esterno del ciclo. 'total' è dichiarato ma non utilizzato. 'total1' e' total2' dovrebbero essere ste a zero prima del ciclo. – MiMo

risposta

11

Usa Math.Round

Math.Round(mydoublevalue, 2); 

Nel codice

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

grazie per il tuo aiuto .... proverò questo – user1483145

+0

@ user1483145: anche, come dici tu sei un novizio, può valere la pena sottolineare che .net e quindi C# ha un tipo di dati chiamato '' decimal'' che è è più preciso con la rappresentazione dei numeri decimali rispetto a '' double''. –

+0

grazie philip .. – user1483145

1

fare in questo modo.

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

Correggere il mio errore. – Adil

4

Se si desidera solo il valore arrotondato per la visualizzazione sotto forma di stringa, è anche possibile utilizzare String.Format.

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

Il testo "{0: 0. ##}" descrive come si desidera che sia formattato. Il simbolo # indica che gli zero finali non dovrebbero essere inclusi (ad esempio 1.2 rimane la stringa "1.2"), se invece fai "{0: 0.00}", sono incluse due cifre decimali, non importa quale, quindi il doppio 1.2 diventerebbe "1.20 ".

0

inputValue = Math.Round (inputValue, 2);

+1

Potresti elaborare per aggiungere un contesto alla tua risposta? –

2

La mia risposta è piuttosto tardi, ma per quelli là fuori come me che vogliono:

per convertire a raddoppiare/decimale e vogliono anche il valore per mostrare sempre 2 cifre decimali (0,00) comeString

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

Quanto segue indica due cifre decimali in ogni momento.

"#.00" 

Quanto segue indica due cifre decimali se è presente un valore.

"#.##"