2010-11-23 5 views
3

Possible en double:
c# - How do I round a decimal value to 2 decimal places (for output on a page)Comment arrondir et formater une décimale correctement?

Je suis en train de faire mes décimales pour afficher avec quatre décimales. La base de données arrondit mon nombre à 4 positions décimales, mais elle renvoie le nombre précédé de 0 (en raison de la précision décimale du champ), donc quelque chose comme 9.45670000. Puis, quand je fais ceci:

string.Format("{0:#,#.####}", decimalValue); 

La sortie que je reçois sur la page est 9,4567, ce qui est ce que je veux.

Cependant, si le nombre de retour de DB est 9,45600000, la sortie après avoir fait le format est 9,456

Mais ce que je dois afficher est 9,4560

Comment formater ma décimale, de sorte que le nombre des décimales est toujours quatre? MISE À JOUR: Aussi, est-il possible d'utiliser une variable (au lieu de .0000) si je voulais que le nombre de décimales soit déterminé dynamiquement?

Répondre

13
string.Format("{0:N4}",decimalValue); 

Standard Numeric Format Strings

Custom Numeric Format Strings

Pour définir la précision que vous pouvez dynamiquement effectuer les opérations suivantes:

double value = 9.4560000; 
int precision = 4; 
string format = String.Format("{{0:N{0}}}",precision); 
string valuestring = String.Format(format, value); 
+2

Sur la base des commentaires ci-dessous, les virgules sont importants aussi vous. Cette chaîne de format les ajoute correctement. En outre, j'ai modifié ma réponse pour fournir un lien vers des chaînes de format numérique standard pour référence future. – theChrisKent

1
string.Format({0:#,#0.0000}, decimalValue); 
1

utilisation String.Format -

decimal d =123.47 
    string specifier="{0:0,0.0000}"; // You need to get specifier dynamically here.. 
    String.Format(specifier, d);  // "123.4700" 
+0

J'ai besoin des virgules pour les grands nombres si ... – Prabhu

+1

mise à jour réponse. – Vishal

+0

Est-il possible d'utiliser une variable (au lieu de .0000) si je voulais que le nombre de décimales soit déterminé dynamiquement? – Prabhu

1

Essayez ceci:

string.Format("{0:#,###.0000}", 9.45600000); 

Ajout des zéros dans le format oblige un zéro à être sortie s'il n'y a pas un chiffre à mettre là.

Pour ajouter les zéros avec le nombre de zéros programme Driven vous pouvez le faire:

int x = 5; 
    string fmt = "{0:#,###." + new string('0', x) + "}"; 
    string.Format(fmt, 9.456000000); 
+0

Est-il possible d'utiliser une variable (au lieu de .0000) si je voulais que le nombre de décimales soit déterminé dynamiquement? – Prabhu

+2

@ la réponse de theChrisKent est meilleure que la mienne. J'avais oublié le spécificateur de précision. – wageoghe

Questions connexes