thousands separador number money miles formato examples ejemplo c# decimal custom-formatting

separador - ¿Cómo separaría miles con espacio en C#?



string.format c# money (5)

La configuración regional de Norwegian utiliza espacios como separador, por lo que si estuviera diseñando un sitio web o una aplicación específicamente para noruegos, podría usar:

(123897.11).ToString("n",new CultureInfo("nb-NO"))

Lo que resulta en

"123 897,11"

Obviamente, si no está escribiendo una aplicación para el mercado noruego, entonces esta sería una solución tonta.

Supongamos que tengo el siguiente número decimal que debo formatear para que cada mil se separen con un espacio:

897.11 to 897.11 1897.11 to 1 897.11 12897.11 to 12 897.11 123897.11 to 123 897.11

He intentado Decimal.ToString ("0 000.00"). Aunque esto funciona bastante bien cuando el número es 1897.11. Pero cuando es 897.11 obtengo 0 897.11.


Necesita un proveedor de formato de número personalizado donde usted mismo cambie el carácter:

static void Main(string[] args) { decimal d = 2000000; var f = new NumberFormatInfo {NumberGroupSeparator = " "}; var s = d.ToString("n", f); // 2 000 000.00 }

Aquí también especifico formatearlo como un número (usando "n" ), por favor vea este enlace para otras opciones de formato:

Cadenas de formato numérico estándar

En este caso, no funcionará si se formatea como una moneda o un porcentaje, ya que, como es posible que ya tenga en cuenta, NumberFormatInfo tiene propiedades independientes para ellos.

La información del formato de cultura actual se puede encontrar en System.Globalization.CultureInfo.CurrentCulture.NumberFormat .


Pase un NumberFormatInfo personalizado con una propiedad personalizada NumberGroupSeparator , y use el formato #,# para indicarle que haga grupos de números. Este ejemplo utiliza el formato de número de la cultura invariante como base.

var nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone(); nfi.NumberGroupSeparator = " "; string formatted = 1234897.11m.ToString("#,0.00", nfi); // "1 234 897.11"


con una cadena de formato personalizado , pero use ''#'' no ''0 es un 0 es un token obligatorio que estará allí, no importa cuánto tiempo sea el número, el signo de número (#) es un token opcional, solo se usará para los dígitos en realidad en el numero

Decimal.ToString("# ###.00")

NOTA. Dejaré esto aquí, pero la respuesta de @Tim S es mejor.

Cuando intento esto, veo que solo genera el primer separador ... Supongo que el separador solo funciona con comas y puntos aquí. Como solución (hasta el número de tamaño máximo que espera), intente esto en su lugar.

Decimal.ToString("# ### ### ### ###.00")


prueba esto

int testNumber = 134566548; Console.WriteLine(string.Format("{0:N}", testNumber));

Usted recibirá: 134 566 548,00

No olvides tu cultura.