it-swarm-es.tech

.NET String.Format () para agregar comas en place of miles para un número

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

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

He encontrado que esta es la forma más sencilla:

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

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 significar decimal en lugar de ., así que ten cuidado.

92
prabir

Formatos estándar, con sus salidas relacionadas,

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 (en-us culture):

(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
69
CoderTao

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
37
Dennis
String.Format("{0:#,###,###.##}", MyNumber)

Eso te dará comas en los puntos relevantes.

32
Stephen Wrighton

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 forma más ordenada y, de manera más segura, de hacer lo que se 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}). Así que no hay necesidad de recordar qué objeto va a qué posición. El formato (es decir, :n) no ha cambiado. Para obtener una característica completa de las novedades, puede ir a esta página .

28
von v.

tan simple como esto:

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

más información está en Aquí

21
a_m_dev

Si desea forzar un separador "," independientemente de la cultura (por ejemplo, en un mensaje de rastreo o registro), el siguiente código funcionará y tiene el beneficio adicional de decirle a la siguiente persona que se encuentra exactamente lo que está haciendo.

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

conjuntos formateados a "19,400,320"

21
Ravi Desai

El siguiente ejemplo muestra varios valores que están formateados mediante el uso de cadenas de formato personalizadas que incluyen cero marcadores de posición.

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"

20
Yitzhak Weinberg
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
11
p.campbell

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

Esto funciona para mi

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

salida 19,950,000

9
cmujica

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

8
gjc

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 su variable

 double yourVariable = 12456.0;
 $"{yourVariable:n0}"; 
 $"{yourVariable:n2}"; 
7
brakeroo
String.Format("0,###.###"); also works with decimal places
4
Abolfazl Rastgou

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

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

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 decimales negativos.

4
dunwan

C # 7.1 (¿quizás antes?) Hace que esto sea tan fácil y de aspecto agradable como debería ser, con interpolación de cadenas:

var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
1
Mark Zhukovsky