.NET String.Format () para agregar comas en el lugar de miles para un número

Quiero agregar una coma en el lugar de los millares para un número. String.Format() ?

 String.Format("{0:n}", 1234); //Output: 1,234.00 string.Format("{0:n0}", 9876); // no digits after the decimal point. Output: 9,876 

Encontré que esta es la manera más simple:

 myInteger.ToString("N0") 
 int number = 1000000000; string whatYouWant = number.ToString("#,##0"); //You get: 1,000,000,000 

Si desea una cultura específica, puede intentar esto:

(19950000.0).ToString("N",new CultureInfo("en-US")) = 19,950,000.00

(19950000.0).ToString("N",new CultureInfo("is-IS")) = 19.950.000,00

Nota: algunas culturas usan , para decir decimal en lugar de . así que ten cuidado.

Formatos estándar, con sus productos relacionados,

 Console.WriteLine("Standard Numeric Format Specifiers"); String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" + "(D) Decimal:. . . . . . . . . {0:D}\n" + "(E) Scientific: . . . . . . . {1:E}\n" + "(F) Fixed point:. . . . . . . {1:F}\n" + "(G) General:. . . . . . . . . {0:G}\n" + " (default):. . . . . . . . {0} (default = 'G')\n" + "(N) Number: . . . . . . . . . {0:N}\n" + "(P) Percent:. . . . . . . . . {1:P}\n" + "(R) Round-trip: . . . . . . . {1:R}\n" + "(X) Hexadecimal:. . . . . . . {0:X}\n", - 1234, -1234.565F); Console.WriteLine(s); 

Ejemplo de salida (cultura en-us):

 (C) Currency: . . . . . . . . ($1,234.00) (D) Decimal:. . . . . . . . . -1234 (E) Scientific: . . . . . . . -1.234565E+003 (F) Fixed point:. . . . . . . -1234.57 (G) General:. . . . . . . . . -1234 (default):. . . . . . . . -1234 (default = 'G') (N) Number: . . . . . . . . . -1,234.00 (P) Percent:. . . . . . . . . -123,456.50 % (R) Round-trip: . . . . . . . -1234.565 (X) Hexadecimal:. . . . . . . FFFFFB2E 

Este es el mejor formato. Funciona en todos esos casos:

 String.Format( "{0:#,##0.##}", 0 ); // 0 String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - some of the formats above fail here. String.Format( "{0:#,##0.##}", 12314 ); // 12,314 String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23 String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2 String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2 
 String.Format("{0:#,###,###.##}", MyNumber) 

Eso te dará comas en los puntos relevantes.

Si desea forzar un separador “,” independientemente de la cultura (por ejemplo, en un seguimiento o mensaje de registro), el siguiente código funcionará y tiene el beneficio adicional de decirle al siguiente tipo que tropieza exactamente con lo que está haciendo.

 int integerValue = 19400320; string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue); 

conjuntos formateados a “19,400,320”

La respuesta más votada fue excelente y ha sido útil durante aproximadamente 7 años. Con la introducción de C # 6.0 y específicamente la Interpolación de cadenas, hay una manera más ordenada e IMO más segura de hacer lo que se le ha pedido to add commas in thousands place for a number :

 var i = 5222000; var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal 

Donde la variable i se coloca en lugar del marcador de posición (es decir, {0} ). Por lo tanto, no es necesario recordar qué objeto va a qué posición. El formateo (es decir :n ) no ha cambiado. Para una característica completa de las novedades, puede ir a esta página .

El siguiente ejemplo muestra varios valores formateados con cadenas de formato personalizadas que incluyen marcadores de posición cero.

 String.Format("{0:N1}", 29255.0); 

O

 29255.0.ToString("N1") 

resultado “29,255.0”

 String.Format("{0:N2}", 29255.0); 

O

 29255.0.ToString("N2") 

resultado “29,255.00”

tan simple como esto:

 float num = 23658; // for example num = num.ToString("N0"); // Returns 23,658 

más información está aquí

 int num = 98765432; Console.WriteLine(string.Format("{0:#,#}", num)); 

Por ejemplo, String.Format("{0:0,0}", 1); devuelve 01, para mí no es válido

Esto funciona para mí

 19950000.ToString("#,#", CultureInfo.InvariantCulture)); 

salida 19,950,000

Tenga en cuenta que el valor que está formateando debe ser numérico. No parece que tomará una representación de cadena de un número y el formato es con comas.

Más simple, utilizando la interpolación de cadenas en lugar de String.Format

  $"{12456:n0}"; // 12,456 $"{12456:n2}"; // 12,456.00 

o usando tuVariable

  double yourVariable = 12456.0; $"{yourVariable:n0}"; $"{yourVariable:n2}"; 

Puede usar una función como esta para formatear números y opcionalmente ingresar los decimales deseados. Si no se especifican decimales, usará dos decimales.

  public static string formatNumber(decimal valueIn=0, int decimalPlaces=2) { return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn); } 

Yo uso decimal, pero puede cambiar el tipo a cualquier otro o usar un objeto anónimo. También puede agregar la comprobación de errores para valores de posición decimal negativos.

 String.Format("0,###.###"); also works with decimal places 

El método que solía usar para no preocuparme más por las culturas y los posibles problemas de formato es que lo formateé como una moneda y luego saqué el símbolo de moneda.

if (decimal.TryParse(tblCell, out result))

 { formattedValue = result.ToString("C").Substring(1); } 

¡A continuación hay una buena solución en Java!

 NumberFormat fmt = NumberFormat.getCurrencyInstance(); System.out.println(fmt.format(n)); 

o para una forma más robusta, es posible que desee obtener la configuración regional de un lugar en particular, luego utilice de la siguiente manera:

 int n=9999999; Locale locale = new Locale("en", "US"); NumberFormat fmt = NumberFormat.getCurrencyInstance(locale); System.out.println(fmt.format(n)); 

SALIDA LOCAL DE EE. UU . : $ 9,999,999.00

Salida regional alemana

 Locale locale = new Locale("de", "DE"); 

PRODUCTO : 9.999.999,00 €

Salida de locale india

 Locale locale = new Locale("de", "DE"); 

PRODUCTO : Rs.9,999,999.00

Salida local de Estonia

 Locale locale = new Locale("et", "EE"); 

PRODUCTO: 9 999 999 €

Como puede ver en diferentes salidas, no tiene que preocuparse de que el separador sea una coma o punto o incluso espacio , puede obtener el número formateado de acuerdo con los estándares i18n.

Si desea mostrarlo en DataGridview, debe cambiar su tipo, ya que por defecto es String y como lo cambia a decimal lo considera como Número con coma flotante.

 Dim dt As DataTable = New DataTable dt.Columns.Add("col1", GetType(Decimal)) dt.Rows.Add(1) dt.Rows.Add(10) dt.Rows.Add(2) DataGridView1.DataSource = dt