2012-05-25 37 views
36
decimal Debitvalue = 1156.547m; 

decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:0.00}", Debitvalue)); 

Tengo que obtener solo dos decimales, pero al usar este código obtengo 1156.547. Déjame saber qué formato debo usar para mostrar dos decimales.Dos lugares decimales usando C#

+0

Math.Round funcionaría e incluso su código funcionaría. Probé con su código y funcionó bien decimal Debitvalue = Convert.ToDecimal ("1156.547"); decimal DEBITAMT = Convert.ToDecimal (string.Format ("{0: 0.00}", Debitvalue)); Console.WriteLine (DEBITAMT); – Anand

+0

Sí, su correcto, gracias! –

Respuesta

27

Si desea redondear el decimal, mira Math.Round()

+4

¿por qué no esto Convert.ToDecimal (string.Format ("{0: F2}", Debitvalue)) ;, cuando ya estamos utilizando convert.todecimal en el código. – Dragon

+4

@Dragon - porque convertir un número en una cadena y volver a un número es un olor a código. – cjk

+1

ooh kk..then usaré así Math.round (Convert.todecimal (val), 2) .. – Dragon

39

Uso Math.Round() para el redondeo a dos decimales

decimal DEBITAMT = Math.Round(1156.547m, 2); 
14

aquí es otro enfoque

decimal decimalRounded = Decimal.Parse(Debitvalue.ToString("0.00")); 
44

Su pregunta se refiere a mostrar dos decimales. Utilizando la siguiente String.Format ayudará:

String.Format("{0:.##}", Debitvalue) 

esto mostrará a continuación, el número con sólo dos cifras decimales.

O si desea que el símbolo de Moneda de utilizar lo siguiente:

String.Format("{0:C}", Debitvalue) 
+5

En realidad, el formato en el primero sería "{0: .00}", si quisiera mostrar 2.10. Con ## 's sería 2.1. – SvendK

+0

este no funciona realmente. redondeará 4.998 a 5 pero OP quiere tener 2 decimales como 4.99 – batmaci

15

utilizo

decimal Debitvalue = 1156.547m; 
decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:F2}", Debitvalue)); 
3

Otra forma:

decimal.Round (decimalvalue, 2, MidpointRounding.AwayFromZero);

2

Probablemente una variante de los otros ejemplos, pero yo uso este método también cerciorarse de un punto se muestra antes de que las cifras decimales y no una coma:

someValue.ToString ("0.00", CultureInfo.InvariantCulture)

8

El mejor enfoque si desea mostrar siempre dos cifras decimales (incluso si su número sólo tiene un decimal) es utilizar

yournumber.ToString("0.00"); 
9

Por tan sólo para mostrar, propiedad de String se puede utilizar como siguiente ..

double value = 123.456789; 
String.Format("{0:0.00}", value); 

Usando System.Math.Round. Este valor puede asignarse a otros o manipularse según sea necesario.

double value = 123.456789; 
System.Math.Round(value, 2); 
Cuestiones relacionadas