2012-06-26 19 views
7

Hola soy novato qué alguien amablemente me dirá cómo convertir los valores de este pedazo de código para un doble decimal/aC# redondeada .. gracias de antemanoconvertir al doble con dos decimales

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

Probablemente debería establecer los cuadros de texto fuera del bucle. 'total' se declara pero no se usa. 'total1' y' total2' deben ser ste a cero antes del ciclo. – MiMo

Respuesta

11

Use Math.Round

Math.Round(mydoublevalue, 2); 

En su código

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

gracias por su ayuda .... Voy a intentar esto – user1483145

+0

@ user1483145: también, como usted dice que es un principiante, puede valer la pena señalar que .net y por lo tanto C# tiene un tipo de datos llamado '' decimal'' que es más exacto con la representación de números decimales que '' doble'' es. –

+0

gracias philip .. – user1483145

1

hacerlo de esta manera.

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

Corregí mi error. – Adil

4

Si sólo desea que el valor redondeado para su visualización como una cadena, también se puede utilizar String.Format.

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

El texto "{0: 0. ##}" describe cómo desea formatearlo. El # indica que los ceros finales no deben incluirse (p. Ej., 1.2 mantiene la cadena "1.2"), si en su lugar hace "{0: 0.00}", se incluyen dos decimales sin importar qué, entonces el doble 1.2 se convertiría en "1.20 ".

0

inputValue = Math.Round (inputValue, 2);

+1

¿Podría elaborar para agregar un contexto a su respuesta? –

2

Mi respuesta es bastante tarde, pero para aquellos que por ahí como yo que quieren:

para convertir al doble/decimal y también querrá que el valor de mostrar siempre 2 decimales (0,00) comoString

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

Lo siguiente significa dos decimales en todo momento.

"#.00" 

Lo siguiente significa dos decimales si hay un valor.

"#.##" 
Cuestiones relacionadas