c# - redondear - ¿Cómo cambiar el símbolo del punto decimal en double.ToString()?
string format c# separador de miles (5)
Me gustaría cambiar el punto decimal a otro carácter en C #. Tengo un value
variable double
double value;
y cuando uso el comando:
Console.WriteLine(value.ToString()); // output is 1,25
Sé que puedo hacerlo:
Console.WriteLine(value.ToString(
CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25
pero no me gusta mucho porque es muy largo y lo necesito bastante a menudo en mi programa.
¿Existe una versión más corta para configurar el "punto decimal" realmente como un punto y no como una coma, como es habitual en mi cultura?
Algún método abreviado es crear una clase NumberFormatInfo, establecer su propiedad NumberDecimalSeparator en "." y use la clase como parámetro para el método ToString () siempre que lo necesite.
using System.Globalization;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
value.ToString(nfi);
Crear un método de extensión?
Console.WriteLine(value.ToGBString());
// ...
public static class DoubleExtensions
{
public static string ToGBString(this double value)
{
return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
}
}
Puede cambiar el separador decimal cambiando la cultura utilizada para mostrar el número. Sin embargo, tenga en cuenta que esto cambiará todo lo demás sobre el número (por ejemplo, separador de agrupación, tamaños de agrupación, número de decimales). De su pregunta, parece que está por defecto a una cultura que usa una coma como separador decimal.
Para cambiar solo el separador decimal sin cambiar la cultura, puede modificar la propiedad NumberDecimalSeparator
del NumberDecimalSeparator
de la cultura actual.
Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
Esto modificará la cultura actual del hilo. Ahora se modificará toda la salida, lo que significa que solo puede usar value.ToString()
para generar el formato que desee, sin preocuparse por cambiar la cultura cada vez que imprima un número.
(Tenga en cuenta que a una cultura neutral no se le puede cambiar el separador decimal).
Si tiene una aplicación web Asp.Net, también puede configurarla en el web.config
para que sea igual en toda la aplicación web.
<system.web>
...
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-GB"
uiCulture="en-GB"
enableClientBasedCulture="false"/>
...
</system.web>
Tal vez no entiendo la intención de su pregunta, así que corríjame si me equivoco, pero ¿no puede aplicar la configuración cultural de forma global una vez y luego no se preocupa por personalizar cada declaración de escritura?
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");