web-dev-qa-db-fra.com

mettre en forme un nombre avec des virgules et des décimales en C # (asp.net MVC3)

J'ai besoin d'afficher un nombre avec des virgules et un point décimal.

Exemple: cas 1: le nombre décimal est 432324 (sans virgule ni point décimal). Il est nécessaire de l’afficher sous la forme 432 324,
mais pas 432.324

Cas 2: le nombre décimal est 2222222.22 (sans virgule). Il est nécessaire de l’afficher sous la forme 2 222 222,22

J'ai essayé ToString("#,##0.##"). Mais ce n'est pas le formater

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

Vous obtiendrez le résultat 1,234,567,890.00.

73
Roys

Peut-être voulez-vous simplement la chaîne de format standard "N", Comme dans

number.ToString("N")

Il utilisera des milliers de séparateurs et un nombre fixe de décimales fractionnaires. Le symbole pour les séparateurs de milliers et le symbole pour le point décimal dépendent du fournisseur de format (typiquement CultureInfo) que vous utilisez, tout comme le nombre de décimales (qui sera normalement de 2, selon vos besoins).

Si le fournisseur de format spécifie un nombre différent de décimales et si vous ne souhaitez pas le modifier, vous pouvez indiquer le nombre de décimales après le N, comme dans .ToString("N2").

Éditer: La taille des groupes entre les virgules est régie par le

CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes

tableau, étant donné que vous ne spécifiez pas un fournisseur de format spécial.

26
Jeppe Stig Nielsen

Essayer avec

ToString("#,##0.00")

À partir de MSDN

* Le spécificateur de format personnalisé "0" sert de symbole zéro. Si la valeur en cours de formatage a un chiffre à la position où le zéro apparaît dans la chaîne de formatage, ce chiffre est copié dans la chaîne de résultat; sinon, un zéro apparaît dans la chaîne de résultat. La position du zéro le plus à gauche avant le point décimal et du zéro le plus à droite après le point décimal détermine la plage de chiffres toujours présents dans la chaîne de résultat.

Le spécificateur "00" arrondit la valeur au chiffre le plus proche précédant la décimale, où l'arrondi par rapport à zéro est toujours utilisé. Par exemple, le formatage 34.5 avec "00" donnerait la valeur 35. *

9
Patrick D'Souza

J'ai eu le même problème. Je voulais formater des nombres tels que le format "Général" dans des feuilles de calcul, c'est-à-dire afficher les nombres décimaux s'ils sont significatifs, mais les couper ensuite. En d'autres termes:

1234,56 => 1 234,56

1234 => 1 234

Il doit prendre en charge un nombre maximal de places après la décimale, mais ne mettez pas de zéros ou de points qui le suivent si vous n'en avez pas besoin, et bien sûr, il doit être adapté à la culture. Je n'ai jamais vraiment trouvé une façon propre de le faire en utilisant String.Format seul, mais une combinaison de String.Format et Regex.Replace avec une aide à la culture de NumberFormatInfo.CurrentInfo a effectué le travail (programme LinqPad C #).

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));
}

Produit:

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

Pour Razor View:

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

Tout ce qui est nécessaire est "#, 0.00", c # fait le reste.

Num.ToString ("#, 0.00" ")

  • Le "#, 0" met en forme les milliers de séparateurs
  • "0.00" force deux décimales
3
Matt Welson

Votre question n’est pas très claire mais cela devrait permettre d’atteindre ce que vous essayez de faire:

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

Alors formatted contiendra: ,494,309,432,324.

3
Belogix

Essayer avec

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

Produit:

1234.55678 => 1.234.556

1234 => 1 234

3
Abolfazl Rastgou

Si vous utilisez des variables de chaîne, vous pouvez formater la chaîne directement à l'aide d'un fichier : spécifiez ensuite le format (par exemple, N0, P2, etc.).

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

Vous pouvez également spécifier le nombre de décimales à afficher en ajoutant un nombre à la fin, comme

$"{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