Risposte:
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));
Ho trovato questo per essere il modo più semplice:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
da un separatore di migliaia, ad esempio uno spazio o addirittura .
.
.
), .NET sostituirà automaticamente la virgola con quel separatore. Ancora una volta, ti esorto a leggere il link pubblicato da Roger se ancora non capisci perché.
Formati standard, con relativi output,
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);
Esempio di output (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
Questo è il formato migliore. Funziona in tutti questi casi:
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)
Questo ti darà le virgole nei punti pertinenti.
La risposta più votata è stata ottima ed è stata utile per circa 7 anni. Con l'introduzione di C # 6.0 e in particolare dell'interpolazione di stringhe c'è un modo più ordinato e, più sicuro dell'IMO, di fare ciò che è stato chiesto 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
Dove la variabile i
viene messa al posto del segnaposto (cioè {0}
). Quindi non è necessario ricordare quale oggetto va in quale posizione. La formattazione (cioè :n
) non è cambiata. Per una funzionalità completa delle novità, puoi visitare questa pagina .
Se si desidera forzare un separatore "," indipendentemente dalla cultura (ad esempio in un messaggio di traccia o registro), il codice seguente funzionerà e avrà l'ulteriore vantaggio di dire al prossimo che si imbatte esattamente in ciò che si sta facendo.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
imposta formattato su "19.400.320"
L'esempio seguente mostra diversi valori formattati usando stringhe di formato personalizzate che includono zero segnaposto.
String.Format("{0:N1}", 29255.0);
O
29255.0.ToString("N1")
risultato "29.255,0"
String.Format("{0:N2}", 29255.0);
O
29255.0.ToString("N2")
risultato "29.255,00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Nota che il valore che stai formattando dovrebbe essere numerico. Non sembra che ci vorrà una rappresentazione in stringa di un numero e il formato è con virgole.
String.Format("0,###.###"); also works with decimal places
C # 7.1 (forse prima?) Lo rende facile e bello come dovrebbe essere, con interpolazione di stringhe:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
È possibile utilizzare una funzione come questa per formattare i numeri e, facoltativamente, passare nelle posizioni decimali desiderate. Se non vengono specificate le posizioni decimali, verranno utilizzate due posizioni decimali.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Uso i decimali ma puoi cambiare il tipo in qualsiasi altro o usare un oggetto anonimo. È inoltre possibile aggiungere errori durante il controllo dei valori decimali negativi.
Il metodo che ho usato per non preoccuparmi più delle culture e dei potenziali problemi di formattazione è che l'ho formattato come valuta e successivamente ho estratto il simbolo di valuta.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
) O utilizza più di un carattere per indicare la valuta (ad es. da-DK
) O non separa migliaia utilizzando le virgole (ad es. La maggior parte dell'Europa continentale).
Di seguito è una buona soluzione in Java però!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
o per un modo più robusto potresti voler ottenere le impostazioni locali di un determinato luogo, quindi utilizzare come di seguito:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
USCITA Locale USA : 9.999.999,00 $
Uscita locale tedesca
Locale locale = new Locale("de", "DE");
USCITA: 9.999.999,00 €
Uscita locale indiana
Locale locale = new Locale("de", "DE");
USCITA: 9.999.999,00 Rs
Uscita locale estone
Locale locale = new Locale("et", "EE");
USCITA: 9999 999 €
Come puoi vedere in diversi output, non devi preoccuparti che il separatore sia una virgola o un punto o addirittura uno spazio , puoi ottenere il numero formattato secondo gli standard i18n
locale
??
Se si desidera mostrarlo in DataGridview, è necessario modificarne il tipo, poiché l'impostazione predefinita è String e poiché lo si cambia in decimale, viene considerato come Numero con virgola mobile
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);
funziona anche senza decimali.