Respuestas:
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
string.Format("{0:n0}", Double.Parse(yourValue));
Encontré que esta es la forma más simple:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
como un separador de miles, por ejemplo, un espacio o incluso .
.
.
. Ej. ), .NET reemplazará automáticamente la coma con ese separador. Una vez más, le insto a que lea el enlace publicado por Roger si aún no entiende por qué es esto.
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 (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.
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, en mi opinión, 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}
). Por lo tanto, no es necesario 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 .
Si desea forzar un separador "," independientemente de la cultura (por ejemplo, en un mensaje de seguimiento o registro), el siguiente código funcionará y tiene el beneficio adicional de decirle al siguiente tipo que se topa exactamente lo que está haciendo.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
conjuntos formateados a "19,400,320"
El siguiente ejemplo muestra varios valores formateados mediante 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"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
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.
String.Format("0,###.###"); also works with decimal places
C # 7.1 (¿quizás antes?) Hace que esto sea tan fácil y atractivo como debería ser, con interpolación de cadenas:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
Puede utilizar una función como esta para formatear números y, opcionalmente, pasar los decimales deseados. Si no se especifican lugares decimales, usará dos lugares decimales.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Yo uso decimal pero puedes cambiar el tipo a cualquier otro o usar un objeto anónimo. También puede agregar la verificación de errores para valores decimales negativos.
El método que solía no preocuparme más por las culturas y los posibles problemas de formato es que lo formateé como moneda y luego saqué el símbolo de moneda.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
), o usa más de un carácter para denotar la moneda (por ejemplo da-DK
), o no separa miles usando comas (por ejemplo, la mayoría de Europa continental).
¡A continuación se muestra una buena solución en Java!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
o para obtener una forma más sólida, es posible que desee obtener la ubicación de un lugar en particular, luego use lo siguiente:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
SALIDA de US Locale: $ 9,999,999.00
Salida de configuración regional alemana
Locale locale = new Locale("de", "DE");
SALIDA: 9.999.999,00 €
Salida de la configuración regional india
Locale locale = new Locale("de", "DE");
SALIDA: Rs.9,999,999.00
Salida de la configuración regional de Estonia
Locale locale = new Locale("et", "EE");
SALIDA: 9999999 €
Como puede ver en diferentes salidas, no tiene que preocuparse de que el separador sea una coma o un punto o incluso un espacio , puede obtener el número formateado de acuerdo con los estándares i18n
locale
??
Si desea mostrarlo en DataGridview, debe cambiar su tipo, ya que el valor predeterminado es String y, dado que lo cambia a decimal, lo considera como Número con punto 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
String.Format("{0:#,##0}", 1234);
También funciona sin decimales.