Formatear números con dos decimales C#
Al trabajar con precios en las aplicaciones, es necesario en algún momento formatear números para que queden con dos decimales desde c#.
Desde trabajarlo directamente desde el código o el valor proveniente de la base de datos en ocasiones el decimal tiene más de dos dígitos, por ejemplo: 1.590, 1.5000, etc.
Al usuario no podemos mostrarle ese tipo de valores, ya que posiblemente cause confusión además de que no se ve estéticamente bien. Puedes comprobarlo en tus aplicaciones bancarias o tickets que en ningún momento se presentan decimales de más de dos dígitos.
Formatear número con dos decimales
Al formatear un decimal debemos de convertirlo en una cadena de tipo string, este tipo de dato nos permite realizar el formateo para definir el numero de valores después del punto.
Por ejemplo, obtenemos el siguiente valor decimal de la base de datos: 1.5900; debemos de dejarlo a dos dígitos: 1.59.
decimal valor = 1.5900M;
string dosDecimal = valor.ToString("0.##");
El ToString es un método que permite enviarle valores, en este caso le enviamos 0.00, lo que significa que regrese dos valores después del punto. Dando como resultado: 1.59, sin realizar redondeos.
Sin embargo, si después del segundo decimal tenemos un numero entre el 5 y el 9 se realiza el redondeo al siguiente valor.
Si el tercer decimal esta entre el 0 y el 4, los dos decimales anteriores se mantienen igual.
decimal valor = 1.5950M;//R: 1.60
decimal valor = 1.5940M;//R: 1.59
Debes de considerar estos puntos al formatear decimales para tus aplicaciones, la opción menos recomendada es la de trucar a dos valores después del punto.
Por último si son cantidades monetarias y quieres agregar el coma (,) a los miles, lo puedes hacer directamente en el formateo.
decimal valor = 1000.5900M;
string dosDecimal = valor.ToString("0,0.00");
De esta forma obtenemos el resultado: 1, 000.59; que para tus tickets o en el interfaz del usuario se ve mejor.
Buena información, me ha resultado muy útil para un pequeño programa de facturas domésticas que estoy haciendo para aprender a programar en C#. Entiendo que si quisiese tres decimales en lugar de dos, la notación que tendría que usar es “0.###”.
hola, estoy en c# por console practicanbdo, un programa de presupuestos que se ingresa metros cuadrado y se multiplica por el valor por metro cuadrado. en viejas epocas programe en clipper 5.2 que permitia un ingreso de numeros que contenia una string preformateada en el imput donde uno le podia indicar con signos # , y . el formato del numero a ingresar. ejemplo: xx.xxx,xx y al ingresar un numero el input respetaba ese ordenamiento. como puedo obtener lo mismo en c#? busque en manuales pero no lo veo.}
puedes utilizar string.format para enviar al usuario algun formato en especial; tambien dependiendo del front que estes utilizando puedes revisar si tiene opciones de formateo de valores.