Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61
Formato de números en C#
Source Code

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/main/articles.php on line 18

Formato de números en C#


Tiempo de lectura: 1 minutos

Hay una gran variedad de máscaras de formato para números y fechas en diferentes idiomas. Este es un resumen de los formatos más habituales en C# para tener a mano.



Uso de '0' o '#'

El caracter '0' se utiliza para determinar el número máximo de dígitos que se han de mostrar y rellenar con ceros los espacio vacíos. En cambio, el el '#' se utiliza para determinar el número máximo de dígitos y dejar los espacios vacíos, en blanco. Se puede utilizar tanto por la derecha como por la izquierda del punto decimal. El valor de referencia en el ejemplo es el número 1234.567

double number = 1234.567;
PrintSample("{0,8:0.00}", number);
PrintSample("{0:0.##}", number);
PrintSample("{0:00.0}", number);

Da esta salida:

Formato {0,8:0.00} --> 1234,57
Formato {0:0.##} -->1234,57
Formato {0:00.0} -->1234,6

Alineación

La alineación de las cifras se consigue con el segundo parámetro de formato. Por ejemplo, en la máscara {0,8:N2} '0' indica el primer elemento a formatear; '8' indica las posiciones que ocupará y, por ser positivo, alineado a la derecha; N2 el formato numérico con 2 decimales.

EL valor negativo indica alineación a la izquierda.

decimal[] amounts = { 16305.32m, 18794.16m };
Console.WriteLine
("   |Saldo apertura               Saldo cierre1|");
Console.WriteLine
("   |{0,-28:N2}{1,14:N2}|", amounts[0], amounts[1]);

Da esta salida:

|Saldo apertura                Saldo cierre|
|16.305,32                        18.794,16|

Variedad idiomática

Si utilizamos elementos que son dependientes del idioma, como la divisa o el formato de separadores decimales, es necesario especificar el idioma, siempre que no sea el que utiliza el sistema. El formato de uso es

 public string Format(IFormatProvider, string, object)

Por ejemplo, utilizamos los idiomas inglés y español

var enCulture = new CultureInfo("en-US");
var esCulture = new CultureInfo("es-ES");

Para formatear en divisa:

Console.WriteLine("Divisa {0}: {1:c}", enCulture.Name, 
number.ToString(enCulture));
Console.WriteLine("Divisa {0}: {1:c}", esCulture.Name, 
number.ToString(esCulture));

Da esta salida:

Divisa en-US: 1234.567 $
Divisa es-ES: 1234,567 €

Para los separadores de miles y punto decimal:

Console.WriteLine("{0}: {1:0n}", enCulture.Name, 
number.ToString(enCulture));
Console.WriteLine("{0}: {1:0n}", esCulture.Name, 
number.ToString(esCulture));

Da esta salida:

Divisa en-US: 1,234.567
Divisa es-ES: 1.234,567

Formatos genéricos

Hay una serie de formatos con un código breve que producen formatos específicos

PrintSample("{0:e}", number); // exponencial
PrintSample("{0:f}", number); // fixed-point
PrintSample("{0:g}", number); // general
PrintSample("{0:n}", number); // separador miles
PrintSample("{0:p}", number); // porcentaje
PrintSample("{0:r}", number); // round-trip

Da esta salida:

Formato {0:e} -->1,234567e+003
Formato {0:f} -->1234,57
Formato {0:g} -->1234,567
Formato {0:n} -->1.234,57
Formato {0:p} -->123.456,70 %
Formato {0:r} -->1234,567

El 'round-trip' es un formato de conversión que permite tener una salida que se puede reutilizar como valor numérico, si ejecutamos este código

double doubleVal = 0.91234582637;
string str = doubleVal.ToString("R", 
   CultureInfo.InvariantCulture);
double resRound = double.Parse(str, 
   CultureInfo.InvariantCulture);

Console.WriteLine(doubleVal.Equals(resRound));

Da como resultado:

True

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 10

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 21
Xavier es un desarrollador senior full stack y opera desde la ciudad mediterránea de Barcelona. Le encantan las tecnologías de software y está convencido que el desarrollo de software es un proceso colaborativo y abierto.
Y es un apasionado de la astronomía y de la fotografía. Lo puedes encontrar en:
Comparte este post


Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/footer.inc.php on line 24