formater 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.
par exemple:
Cas 1: Le nombre décimal est 432324 (ceci n'a pas de virgule ou de points décimaux)
Besoin de l'afficher 432,324.00
mais pas 432,324
cas 2: le nombre décimal est 2222222.22 (ceci n'a pas de virgule) Besoin de l'afficher 2 222 222.22
j'ai essayé ToString("#,##0.##")
. Mais Ce n'est Pas la mise en forme
10 réponses
int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");
Vous obtiendrez le résultat 1,234,567,890.00
.
peut-être que vous voulez simplement la chaîne de format standard "N"
, en
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 en 2, comme vous le désirez).
si le fournisseur de format spécifie un nombre différent de décimales, et si vous ne voulez pas changer le format de fournisseur, vous pouvez donner le nombre de décimales après le N
, en .ToString("N2")
.
Edit: La taille des groupes entre les virgules sont régies par le
CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes
array, étant donné que vous ne spécifiez pas de fournisseur de format spécial.
ToString("#,##0.00")
From MSDN
*le spécificateur de format personnalisé " 0 " Sert de symbole de Zero-placeholder. Si la valeur qui est formatée a un chiffre dans la position où le Zéro apparaît dans la chaîne de format, 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 gamme des chiffres qui sont toujours présents dans la chaîne de résultat.
le spécificateur " 00 " permet d'arrondir la valeur au chiffre le plus proche précédant la décimale, où l'on utilise toujours l'arrondissement à l'écart du zéro. Par exemple, le formatage 34.5 Avec "00" donnerait la valeur 35.*
j'ai eu le même problème. Je voulais formater des nombres comme le format "général" dans des tableurs, c'est-à-dire montrer les décimales si elles sont significatives, mais les couper si non. En d'autres termes:
1234.56 => 1,234.56
1234 = > 1,234
il doit supporter un nombre maximum de places après la décimale, mais ne mettez pas de zéros ou de points si ce n'est pas nécessaire, et bien sûr, il doit être adapté à la culture. Je n'ai jamais vraiment compris un moyen propre à faire à l'aide de Chaîne de caractères.Format seul, mais une combinaison de Chaîne.Format et Regex.Remplacez avec un peu de culture de l'aide de NumberFormatInfo.CurrentInfo fait le travail (LinqPad Programme 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
Pour Rasoir Vue:
$@string.Format("{0:#,0.00}",item.TotalAmount)
CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)
votre question n'est pas très claire mais cela devrait vous permettre de réaliser ce que vous tentez de faire:
decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");
formatted
contient: 3,494,309,432,324.00
Tout ce qui est nécessaire est un "#0.00", c# fait le reste.
Num.ToString("#,0.00"")
- "#, 0" formats le séparateur de milliers
- "0.00" les forces de deux points décimaux
ToString("#,##0.###")
Produit:
1234.55678 => 1,234.556
1234 = > 1,234
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;
}