Chaîne.net.Format () pour ajouter des virgules en milliers place pour un nombre
Je veux ajouter une virgule dans la place des milliers pour un nombre. String.Format()
?
20 réponses
String.Format("{0:n}", 1234); //Output: 1,234.00
string.Format("{0:n0}", 9876); // no digits after the decimal point. Output: 9,876
J'ai trouvé que c'était le moyen le plus simple:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
Si vous voulez une culture spécifique, vous pouvez essayer ceci:
(19950000.0).ToString("N",new CultureInfo("en-US"))
= 19,950,000.00
(19950000.0).ToString("N",new CultureInfo("is-IS"))
= 19.950.000,00
Note: certaines cultures utilisent ,
pour signifier décimal plutôt que {[3] } alors soyez prudent.
Formats Standard, avec leurs sorties associées,
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);
Exemple de sortie (fr-fr 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
C'est le meilleur format. Fonctionne dans tous ces cas:
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)
Cela vous donnera des virgules aux points pertinents.
Si vous souhaitez forcer un séparateur", " indépendamment de la culture (par exemple dans un message de trace ou de journal), le code suivant fonctionnera et aura l'avantage supplémentaire de dire exactement ce que vous faites au prochain.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
Définit formaté à "19 400 320"
La réponse la plus votée était géniale et a été utile pendant environ 7 ans. Avec L'introduction de C # 6.0 et plus précisément l'Interpolation de chaîne, il y a un moyen plus propre et, IMO plus sûr, de faire ce qui a été demandé 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
, la variable i
est mis en place de l'espace réservé (c'est à dire {0}
). Donc, il n'y a pas besoin de se rappeler quel objet va à quelle position. Le formatage (c'est-à-dire :n
) n'a pas changé. Pour une fonctionnalité complète de ce qui est nouveau, vous pouvez aller à cette page.
L'exemple suivant affiche plusieurs valeurs formatées à l'aide de chaînes de format personnalisées qui n'incluent aucun espace réservé.
String.Format("{0:N1}", 29255.0);
Ou
29255.0.ToString("N1")
Résultat "29,255. 0"
String.Format("{0:N2}", 29255.0);
Ou
29255.0.ToString("N2")
Résultat "29,255. 00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Par exemple String.Format("{0:0,0}", 1);
retourne 01, pour moi, n'est pas valide
Cela fonctionne pour moi
19950000.ToString("#,#", CultureInfo.InvariantCulture));
Sortie 19,950,000
Plus simple, en utilisant l'interpolation de chaîne au lieu de chaîne.Format
$"{12456:n0}"; // 12,456
$"{12456:n2}"; // 12,456.00
Ou en utilisant yourVariable
double yourVariable = 12456.0;
$"{yourVariable:n0}";
$"{yourVariable:n2}";
Vous pouvez utiliser une fonction comme celle-ci pour formater les nombres et éventuellement passer aux décimales souhaitées. Si les décimales ne sont pas spécifiées, il utilisera deux décimales.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
J'utilise decimal mais vous pouvez changer le type en un autre ou utiliser un objet anonyme. Vous pouvez également ajouter une vérification d'erreur pour les valeurs décimales négatives.
String.Format("0,###.###"); also works with decimal places
La méthode que j'ai utilisée pour ne plus m'inquiéter des cultures et des problèmes de formatage potentiels est que je l'ai formaté en tant que monnaie et que j'ai retiré le symbole monétaire par la suite.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
Ci-dessous est une bonne solution en Java!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
Ou pour une manière plus robuste, vous pouvez obtenir les paramètres régionaux d'un endroit particulier, puis utiliser comme ci-dessous:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
NOUS paramètres Régionaux de SORTIE: $9,999,999.00
Allemand paramètres Régionaux de sortie
Locale locale = new Locale("de", "DE");
SORTIE: 9.999.999,00 €
Indien paramètres Régionaux de sortie
Locale locale = new Locale("de", "DE");
Sortie: Rs.9,999,999.00
L'Estonien Paramètres Régionaux sortie
Locale locale = new Locale("et", "EE");
SORTIE: 9 999 999 €
Comme vous pouvez le voir dans différentes sorties, vous n'avez pas à vous soucier que le séparateur soit un virgule ou point ou même Espace Vous pouvez obtenir le nombre formaté selon les normes i18n
Si vous voulez l'afficher dans DataGridview, vous devez changer son type, car par défaut est String et puisque vous le changez en décimal, il considère comme un nombre à virgule flottante
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