2011-01-14 15 views

risposta

16

Hai provato a usare value = Decimal.Round(value, 2)?

Ad esempio:

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

Si noti che questo è arrotondamento piuttosto che solo il taglio (ecco è arrotondato per eccesso) ... che cosa esattamente avete bisogno? È probabile che la struttura Decimal supporti tutto ciò che è necessario fare. Consultare MSDN per ulteriori opzioni.

+0

Math.Round può fare l'arrotondamento del banchiere. http://msdn.microsoft.com/en-us/library/ms131275.aspx –

8
decimal.Truncate(myDecimal * 100)/100 

Ciò eliminerebbe tutto dopo le prime due cifre decimali. Per arrotondare vedi la risposta di Jon.

0

Questo dovrebbe funzionare (EDIT: fisso per rimuovere arrotondamento):

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

In C# '^' è 'xor'. Inoltre, se qualcuno usa le probabilità "decimali" è una scelta deliberata e probabilmente non vogliono un altro tipo (a parte il fatto che il tuo esempio è in ogni caso lontano). – Joey

+0

Giusto, scusa dovrei essere math.exp(). Come va altrimenti? –

+0

'Int' non è un tipo in C# e stai eseguendo la divisione integer in seguito, senza lasciare comunque spazi decimali. – Joey

1

se è solo per scopi di visualizzazione, è possibile utilizzare:

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