wake-up-neo.com

Formatieren einer Zahl mit Kommas und Dezimalstellen in C # (asp.net MVC3)

Ich muss eine Zahl mit Komma und Komma anzeigen.

Beispiel: Fall 1: Die Dezimalzahl ist 432324 (Dies hat keine Kommas oder Dezimalpunkte) Muss als 432,324. angezeigt werden
aber nicht 432.324

Fall 2: Die Dezimalzahl lautet 2222222.22 (ohne Kommas). Sie muss als 2,222,222.22 angezeigt werden

Ich habe ToString("#,##0.##") ausprobiert. Aber es formatiert es nicht

37
Krishan
int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");

Sie erhalten das Ergebnis 1,234,567,890.00.

73
Roys

Vielleicht möchten Sie einfach die Standardformatzeichenfolge "N" Wie in

number.ToString("N")

Es werden tausend Trennzeichen und eine feste Anzahl von Dezimalbrüchen verwendet. Das Symbol für Tausendertrennzeichen und das Symbol für den Dezimalpunkt hängen vom verwendeten Formatanbieter (in der Regel CultureInfo) ab, ebenso wie die Anzahl der Dezimalstellen (normalerweise um 2, je nach Bedarf).

Wenn der Formatanbieter eine andere Anzahl von Dezimalstellen angibt und Sie den Formatanbieter nicht ändern möchten, können Sie die Anzahl der Dezimalstellen nach dem N angeben, wie in .ToString("N2").

Bearbeiten: Die Größe der Gruppen zwischen den Kommas richtet sich nach dem

CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes

array, vorausgesetzt, Sie geben keinen speziellen Formatanbieter an.

26

Versuche es mit

ToString("#,##0.00")

Von MSDN

* Der benutzerdefinierte Formatbezeichner "0" dient als Null-Platzhalter-Symbol. Wenn der zu formatierende Wert eine Ziffer an der Position hat, an der die Null in der Formatzeichenfolge angezeigt wird, wird diese Ziffer in die Ergebniszeichenfolge kopiert. Andernfalls wird in der Ergebniszeichenfolge eine Null angezeigt. Die Position der Null ganz links vor dem Dezimalpunkt und der Null ganz rechts nach dem Dezimalpunkt bestimmt den Ziffernbereich, der in der Ergebniszeichenfolge immer vorhanden ist.

Der "00" -Spezifizierer bewirkt, dass der Wert auf die nächste Stelle vor der Dezimalstelle gerundet wird, wobei immer von Null abgerundet wird. Wenn Sie beispielsweise 34.5 mit "00" formatieren, erhalten Sie den Wert 35. *

9
Patrick D'Souza

Ich hatte das gleiche problem Ich wollte Zahlen wie das "Allgemeine" Format in Tabellenkalkulationen formatieren, dh Dezimalstellen anzeigen, wenn sie signifikant sind, aber abhacken, wenn nicht. Mit anderen Worten:

1234,56 => 1,234,56

1234 => 1,234

Es muss eine maximale Anzahl von Nachkommastellen unterstützen, aber keine nachgestellten Nullen oder Punkte setzen, wenn dies nicht erforderlich ist, und natürlich muss es kulturfreundlich sein. Ich habe nie wirklich einen sauberen Weg gefunden, dies mit String.Format alleine zu tun, sondern mit einer Kombination aus String.Format und Regex.Replace mit etwas kultureller Hilfe von NumberFormatInfo.CurrentInfo hat den Job ausgeführt (LinqPad C # -Programm).

string FormatNumber<T>(T number, int maxDecimals = 4) {
    return Regex.Replace(String.Format("{0:n" + maxDecimals + "}", number),
                         @"[" + System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator + "]?0+$", "");
}   

void Main(){
    foreach (var test in new[] { 123, 1234, 1234.56, 123456.789, 1234.56789123 } )
        Console.WriteLine(test + " = " + FormatNumber(test));
}

Produziert:

123 = 123
1234 = 1,234
1234.56 = 1,234.56
123456.789 = 123,456.789
1234.56789123 = 1,234.5679
8
Wade Hatler

Für Razor View:

[email protected]("{0:#,0.00}",item.TotalAmount)
8
JoshYates1980
CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)
6
DarkoM

Alles was benötigt wird ist "#, 0.00", c # erledigt den Rest.

Num.ToString ("#, 0.00" ")

  • Das "#, 0" formatiert die Tausendertrennzeichen
  • "0.00" erzwingt zwei Dezimalstellen
3
Matt Welson

Ihre Frage ist nicht sehr klar, aber dies sollte das erreichen, was Sie versuchen zu tun:

decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");

Dann enthält formatted: ,494,309,432,324.

3
Belogix

Versuche es mit

ToString("#,##0.###")

Produziert:

1234,55678 => 1,234,556

1234 => 1,234

3

Wenn Sie Zeichenfolgenvariablen verwenden, können Sie die Zeichenfolge direkt mit : Formatieren und dann das Format angeben (z. B. N0, P2 usw.).

decimal Number = 2000.55512016465m;
$"{Number:N}" #Outputs 2,000.55512016465

Sie können auch die Anzahl der anzuzeigenden Dezimalstellen angeben, indem Sie am Ende eine Zahl wie hinzufügen

$"{Number:N1}" #Outputs 2,000.5
$"{Number:N2}" #Outputs 2,000.55
$"{Number:N3}" #Outputs 2,000.555
$"{Number:N4}" #Outputs 2,000.5551
0
Suit Boy Apps
string Mynewcurrency = DisplayIndianCurrency("7743450.00");
        private string DisplayIndianCurrency(string EXruppesformate) 
        { 
        string fare = EXruppesformate;
        decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture);
        CultureInfo hindi = new CultureInfo("en-IN");
     // string text = string.Format(hindi, "{0:c}", parsed);if you want <b>Rs 77,43,450.00</b>
    string text = string.Format(hindi, "{0:N}", parsed); //if you want <b>77,43,450.00</b>
      return ruppesformate = text;
    }
0
Sagar Mahajan