separador - string.format c# decimal
.NET String.Format() para agregar comas en el lugar de miles de un nĂºmero (20)
¡A continuación hay una buena solución en Java!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
o para obtener una forma más robusta, es posible que desee obtener la configuración regional de un lugar en particular, luego use la siguiente información:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
US SALIDA local: $ 9,999,999.00
Salida local alemana
Locale locale = new Locale("de", "DE");
SALIDA: 9.999.999,00 €
Salida de India
Locale locale = new Locale("de", "DE");
SALIDA: Rs.9,999,999.00
Salida local de Estonia
Locale locale = new Locale("et", "EE");
SALIDA: 9 999 999 €
Como puede ver en diferentes salidas, no tiene que preocuparse de que el separador sea una coma, un punto o incluso un espacio , puede obtener el número formateado de acuerdo con los estándares i18n
Quiero agregar una coma en el lugar de los miles para un número. String.Format()
?
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);
}
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"
Encontré que esta es la forma más simple:
myInteger.ToString("N0")
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
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
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, IMO más segura, de hacer lo que se le pide 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 se coloca la variable i
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 una característica completa de las novedades, puede ir a esta página .
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}";
Por ejemplo, String.Format("{0:0,0}", 1);
devuelve 01, para mi no es valido
Esto funciona para mi
19950000.ToString("#,#", CultureInfo.InvariantCulture));
salida 19,950,000
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.
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"
Si desea mostrarlo en DataGridview, debe cambiar su tipo, ya que el valor predeterminado es Cadena y dado que lo cambia a decimal, se 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
Si quieres una cultura específica, puedes 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.
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.
tan simple como esto:
float num = 23658; // for example
num = num.ToString("N0"); // Returns 23,658
mas informacion esta Here
String.Format("0,###.###"); also works with decimal places
String.Format("{0:#,###,###.##}", MyNumber)
Eso te dará comas en los puntos relevantes.
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000