2011-01-14 1 views

Répondre

16

Avez-vous essayé d'utiliser value = Decimal.Round(value, 2)?

Par exemple:

using System; 

class Test 
{  
    static void Main() 
    { 
     decimal d = 1234.5678m; 
     Console.WriteLine("Before: {0}", d); // Prints 1234.5678 
     d = decimal.Round(d, 2); 
     Console.WriteLine("After: {0}", d); // Prints 1234.57 
    } 
} 

Notez que ceci est arrondi plutôt que couper juste (ici il est donc arrondi) ... qu'est-ce exactement que vous avez besoin? Les chances que la struct Decimal supporte tout ce que vous devez faire. Consultez MSDN pour plus d'options.

+0

Math.Round peut arrondir les banquiers. http://msdn.microsoft.com/en-us/library/ms131275.aspx –

8
decimal.Truncate(myDecimal * 100)/100 

Cela couperait tout ce qui suit les deux premières décimales. Pour arrondir, voir la réponse de Jon.

0

Cela devrait fonctionner (EDIT: fixe pour enlever l'arrondi):

((Int32)(value * Math.Pow(10, decimalPlaces)))/(Math.Pow(10D, decimalPlaces)); 
+2

En C# '^' est 'xor'. De plus, si quelqu'un utilise les chances décimales, c'est un choix délibéré et il ne veut probablement pas d'un autre type (mis à part le fait que votre exemple soit loin dans tous les cas). – Joey

+0

Droit, désolé devrait être math.exp(). Comment cela se passe-t-il autrement? –

+0

'Int' n'est pas un type en C# et vous faites ensuite une division entière, ne laissant aucune décimale de toute façon. – Joey

1

Si son juste à des fins d'affichage, vous pouvez utiliser:

Console.Out.WriteLine("Number is: {0:F2}", myDecimalNumber); 
Questions connexes