español createspecificculture c# double

createspecificculture - cultureinfo.invariantculture c#



¿Cómo configurar CultureInfo.InvariantCulture por defecto? (7)

1 cadena vacía especifica InvariantCulture en config.file

Por defecto, Culture y UICulture están configurados en "" en la configuración.

<system.web> <globalization culture="" /> </system.web>

2 También puedes definir en tu Thread

Cuando tengo tal pieza de código en C #:

double a = 0.003; Console.WriteLine(a);

Imprime "0,003".

Si tengo otro código:

double a = 0.003; Console.WriteLine(a.ToString(CultureInfo.InvariantCulture));

Imprime "0.003".

Mi problema es que necesito un punto como marca decimal pero C # hace una coma por defecto. Además, no quiero escribir una línea tan larga de código solo para imprimir una variable doble.



Cuando llama a WriteLine() y da un doble, internamente hace más o menos esta llamada:

Console.WriteLine(a.ToString(CultureInfo.CurrentCulture));

La tarea ahora sería reemplazar el CurrentCulture con InvariantCulture . Esto se puede hacer por la siguiente línea de código:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

Ahora su hilo está configurado como InvariantCulture y su primera llamada también debe imprimir "0.003".


Desde .NET Framework versión 4.5 (y .NET Core / Standard 1.0) puede cambiar la cultura para toda la aplicación , en lugar de solo el tema actual, modificando las propiedades CultureInfo.DefaultThreadCurrentCulture y CultureInfo.DefaultThreadCurrentUICulture :

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;


Puede establecer CultureInfo.InvariantCulture como predeterminado como se muestra arriba en @Guffa y los demás.

Pero tienes que tener una idea clara de por qué haces esto. Estará bien si realiza operaciones de exportación / importación de datos, pero probablemente no lo use para las cadenas que se presentan al usuario.

La documentación de Microsoft establece:

La cultura invariante es insensible a la cultura; está asociado con el idioma inglés pero no con ningún país / región. Usted especifica la cultura invariante por nombre usando una cadena vacía ("") en la llamada a un método de creación de instancias de CultureInfo. ...

A diferencia de los datos sensibles a la cultura, que están sujetos a cambios por personalización del usuario o por actualizaciones de .NET Framework o el sistema operativo, los datos de la cultura invariable son estables a lo largo del tiempo y entre culturas instaladas y los usuarios no pueden personalizarlos. Esto hace que la cultura invariable sea particularmente útil para las operaciones que requieren resultados independientes de la cultura, como las operaciones de formateo y análisis que persisten en los datos formateados, o las operaciones de clasificación y ordenación que requieren que los datos se muestren en un orden fijo independientemente de la cultura.


Puede establecer la cultura del hilo actual para cualquier cultura que desee:

Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

Tenga en cuenta que cambiar la cultura también afecta a cosas como la comparación y clasificación de cadenas, formatos de fecha y análisis de fechas y números.


Si nunca desea un formato de números y fechas específico de la cultura, puede establecer la cultura una vez, tal vez al inicio de la aplicación.

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture

Si se trata de una aplicación ASP.NET, una alternativa más simple es establecer la cultura en el elemento de configuración <globalization> de web.config.

De lo contrario no tienes muchas alternativas para especificar la cultura explícitamente. Si se encuentra escribiendo repetitivamente la misma línea larga de código, haga lo que siempre hace en este caso: envuélvalo en un método.