2011-01-14 10 views

Respuesta

16

¿Ha intentado utilizar value = Decimal.Round(value, 2)?

Por ejemplo:

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

Tenga en cuenta que este es el redondeo en lugar de sólo el recorte (lo que aquí está redondeado hacia arriba) ... ¿qué es exactamente lo que necesita? Es probable que la estructura Decimal sea compatible con lo que necesite hacer. Consulte MSDN para más opciones.

+0

Math.Round puede hacer el redondeo bancario. http://msdn.microsoft.com/en-us/library/ms131275.aspx –

8
decimal.Truncate(myDecimal * 100)/100 

Esto cortaría todo siguiendo los dos primeros lugares decimales. Para redondear, ver la respuesta de Jon.

0

Esto debería funcionar (EDIT: Se ha corregido para eliminar el redondeo):

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

En C# '^' es 'xor'. Además, si alguien usa las oportunidades "decimales", es una elección deliberada y es probable que no quiera otro tipo (aparte de eso, su ejemplo está muy lejos de ser posible). – Joey

+0

Correcto, lo siento debería ser math.exp(). ¿Cómo es todo lo contrario? –

+0

'Int' no es un tipo en C# y luego se divide en enteros, sin dejar decimales de todos modos. – Joey

1

si es sólo para fines de visualización, puede utilizar:

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