182 votes

C# Double - ToString() mise en forme avec deux décimales, mais pas d’arrondi

Comment pour formater un à un en c# afin d’avoir seulement deux décimales ?

Si j’utilise le nombre est ensuite arrondi et je veux un simple troncature sans arrondi. Je veux aussi la conversion en être culture sensible.

228voto

Kyle Rozendo Points 15606

J’ai utiliser la syntaxe suivante :

Par exemple :

Si le nombre est 50.947563 et que vous utilisez ce qui suit, se produira ce qui suit :

Et il n’y a ta réponse tronqué, maintenant, pour mettre en forme la chaîne procédez simplement comme suit :

122voto

Brian Ogden Points 1954
<pre><code></code><p><a href="http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/" rel="nofollow">http://Dobrzanski.net/2009/05/14/c-DecimalToString-and-How-to-get-rid-of-trailing-Zeros/</a></p></pre>

36voto

CesarGon Points 8710

Je vous suggère de tronquer tout d'abord, et puis le format:

double a = 123.4567;
double aTruncated = Math.Truncate(a * 100) / 100;
CultureInfo ci = new CultureInfo("de-DE");
string s = string.Format(ci, "{0:0.00}%", aTruncated);

Utilisez la constante de 100 pour les 2 chiffres tronquer; utiliser un 1 suivi d'autant de zéros que les chiffres après la virgule que vous souhaitez. Utiliser le nom de culture vous avez besoin d'ajuster la mise en forme de résultats.

6voto

maxp Points 5053

Le c#, fonction, tel qu'exprimé par Kyle Rozendo:

string DecimalPlaceNoRounding(double d, int decimalPlaces = 2)
{
    d = d * Math.Pow(10, decimalPlaces);
    d = Math.Truncate(d);
    d = d / Math.Pow(10, decimalPlaces);
    return string.Format("{0:N" + Math.Abs(decimalPlaces) + "}", d);
}

4voto

Zain Ali Points 3813

Ce travail est pour moi

string prouctPrice = Convert.ToDecimal(String.Format("{0:0.00}", Convert.ToDecimal(yourString))).ToString();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X