to string 2 decimal places c#




.NET String.Format() per aggiungere virgole in migliaia di posizioni per un numero (14)

È possibile utilizzare una funzione come questa per formattare numeri e facoltativamente passare le cifre decimali desiderate. Se non vengono specificate le posizioni decimali, verranno utilizzate due cifre decimali.

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

Io uso decimal ma puoi cambiare il tipo con qualsiasi altro o usare un oggetto anonimo. È anche possibile aggiungere un controllo degli errori per i valori decimali negativi.

Voglio aggiungere una virgola a migliaia di posti per un numero. String.Format() ?


Ad esempio String.Format("{0:0,0}", 1); restituisce 01, per me non è valido

Questo funziona per me

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

uscita 19.950.000


Ho trovato questo il modo più semplice:

myInteger.ToString("N0")

Il metodo che non mi preoccupavo più delle culture e dei potenziali problemi di formattazione è che l'ho formattato come valuta e poi ho estratto il simbolo di valuta.

if (decimal.TryParse(tblCell, out result))

{
  formattedValue = result.ToString("C").Substring(1);
}

Nell'esempio seguente vengono visualizzati diversi valori formattati utilizzando stringhe di formato personalizzate che includono zero segnaposti.

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"


Più semplice, usando l'interpolazione della stringa invece di String.Format

 $"{12456:n0}"; // 12,456
 $"{12456:n2}"; // 12,456.00

o usando la tua variabile

 double yourVariable = 12456.0;
 $"{yourVariable:n0}"; 
 $"{yourVariable:n2}"; 

Qui di seguito è una buona soluzione in Java però!

NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));

o per un modo più robusto si potrebbe desiderare di ottenere le impostazioni locali di un luogo particolare, 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));

US Locale OUTPUT: $ 9,999,999,00

Uscita locale tedesca

Locale locale = new Locale("de", "DE");

PRODUZIONE: 9.999.999,00 €

Uscita locale indiana

Locale locale = new Locale("de", "DE");

USCITA: Rs.9,999,999,00

Uscita locale estone

Locale locale = new Locale("et", "EE");

PRODUZIONE: 9 999 999 €

Come puoi vedere in diverse uscite non devi preoccuparti che il separatore sia una virgola o un punto o anche uno spazio puoi ottenere il numero formattato secondo gli standard i18n


Se si desidera forzare un separatore "," a prescindere dalla cultura (ad esempio in un messaggio di traccia o di registro), il codice seguente funzionerà e avrà il vantaggio di dire al prossimo che si imbatte esattamente in quello che si sta facendo.

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

imposta formattato su "19.400.320"


Se vuoi mostrarlo in DataGridview, dovresti cambiare il suo tipo, perché default è String e dato che lo cambi in decimale lo consideri 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

Si noti che il valore che si sta formattando deve essere numerico. Non sembra che prenderà una rappresentazione di stringa di un numero e il formato è con virgole.


String.Format("0,###.###"); also works with decimal places

String.Format("{0:#,###,###.##}", MyNumber)

Questo ti darà delle virgole nei punti pertinenti.


int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));

int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000




.net