Índice
1. Introducción2. Palabras Clave
3. Contexto
3.1 Especificadores estándar de formato número
3.1.1 Sobrecarga del método ToString()
3.1.2 Formato con llaves para parámetros
4. Redondeando un Número Decimal a Dos Posiciones
5. Recursos
6. Conclusiones
7. Literatura & Enlaces
1. Introducción
La manipulación de valores numéricos es quizás una de las tareas más comunes que se pueden llevar a cabo en aplicaciones financieras, científicas, matemáticas. En esta oportunidad se enseña al programador del lenguaje de programación C# a redondear un número decimal a dos posiciones decimales. Para lograrlo se usan lo que se conoce como especificadores de formato; que no son más que cadenas que definen el formato de presentación para valores numéricos.
2. Palabras Clave
- Decimal
- Especificador de formato
- Método sobrecargado
3. Contexto
3.1 Especificadores estándar de formato numérico
En el lenguaje de programación C# se cuenta con un conjunto estándar de especificadores de formato para valores numéricos. La sintaxis para dar formato a valores numéricos sigue estas convenciones:
3.1.1 Sobrecarga del método ToString()
El método ToString() cuenta con una versión sobrecargada que recibe como argumento una cadena de caracteres a modo de formato de valores numéricos. Por ejemplo, en las siguientes líneas de código se utilizan distintos formatos numéricos para valores de moneda, decimales, exponentes:
decimal valor = 987.654m;
Console.WriteLine(valor.ToString("C2")); // $987.65
int valor = 12345;
Console.WriteLine(valor.ToString("D")); // 12345
Console.WriteLine(value.ToString("D8")); // 00012345
double valor = 12345.6789;
Console.WriteLine(valor.ToString("E", CultureInfo.InvariantCulture)); // 1.234568E+004
Nótese cómo en este último caso se utiliza otra de las versiones sobrecargadas de ToString() para especificar la presentación del valor de acuerdo a la configuración regional.
3.1.2 Formato con llaves para parámetros
En C# también se cuenta con un modo alternativo para la especificación del formato de valores numéricos. Éste consiste en el uso de llaves junto con un formato anidado:
{[formato]}
Los ejemplos de la sección anterior -3.1.1- quedan escritos así de acuerdo a este formato:
decimal value = 123.456m;
Console.WriteLine("{0:C2}.", value); $123.46
int valor = 12345;
Console.WriteLine("{0:D}", valor); // 12345
Console.WriteLine("{0:D8}", valor);; // 00012345
Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
double valor = 12345.6789;
Console.WriteLine("{0:E}", valor); // 1.234568E+004
[Nota: En el artículo presentado en "Standard Numeric Format Strings" (2016) se presenta la versión explicativa extendida de estos formatos de presentación de valores numéricos.]
4. Redondeando un Número Decimal a Dos Posiciones
Ahora se escribe un ejemplo con las diferentes variantes de formato de un número de decimal con dos posiciones de precisión:
En la línea 12 se declara la variable decimal valor con el valor 951753456.951753456M con 9 decimales de precisión. El valor original de esta variable se imprime en la salida estándar con la instrucción de la línea 13. Las líneas 17-20 llevan a cabo las siguientes operaciones:
- Línea 17: usa el especificador de formato #.## para indicar que ToString() deberá imprimir el valor decimal con dos decimales.
- Línea 18: con el formato {0:0.00} (equivalente a #.##) se indica que el valor decimal debe tener la misma precisión: 2 dígitos.
- Línea 19: con la cadena de formato N2 se formatea el valor decimal con separador de unidades de mil y de decimal con dos decimales de precisión.
- Línea 20: el especificador de formato {0:C} se formatea el valor decimal como un valor de moneda; también con dos decimales de precisión por defecto.
Compilación:
csc /t:exe FormatoDecimal.cs
Ejecución assembly:
.\FormatoDecimal.exe
Demostración ejecución assembly (ideone.com): http://ideone.com/FWgkdR
951753456.951753456 951753456.95 951753456.95 951,753,456.95 $951,753,456.95
5. Recursos
Este es el vídeo en donde el equipo de expertos Gerry O'Brein y Paul Pardi de MVA, responden y explican esta pregunta:
6. Conclusiones
En esta pregunta C# se demostró cómo formatear un valor decimal con dos decimales de precisión. Ahora se sabe que existen dos alternativas para formatear un valor decimal: con las versiones sobrecargadas de ToString() y las llaves de formato -{[formato]}.
En la próxima pregunta C# se responde cómo eliminar los valores duplicados de un arreglo.
7. Literatura & Enlaces
Top C# Questions Answered | Microsoft Virtual Academy (2016, marzo 27). Recuperado desde: https://mva.microsoft.com/en-US/training-courses/twenty-c-questions-answered-8298?l=yIsvPWYy_8204984382Standard Numeric Format Strings (2016, marzo 27). Recuperado desde: https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
V
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.