Pregunta

Uso de C #, quiero dar formato a un decimal para mostrar únicamente dos decimales y luego voy a tomar ese decimal y restarlo a otro decimal. Me gustaría ser capaz de hacer esto sin tener que convertirlo en una cadena para formatear y luego convertirlo de nuevo en un decimal. Lo siento que me olvide de especificar esto, pero yo no quiero redondear, sólo quiero a cortar el último punto decimal. ¿Hay alguna forma de hacer esto?

¿Fue útil?

Solución

Si no desea redondear el decimal, puede utilizar Decimal.Truncate. Por desgracia, sólo se puede truncar TODOS los decimales. Para solucionar esto, se podía multiplicar por 100, truncar y dividir por 100, así:

decimal d = ...;
d = Decimal.Truncate(d * 100) / 100;

Y se podría crear un método de extensión si se está haciendo suficientes veces

public static class DecimalExtensions
{
  public static decimal TruncateDecimal(this decimal @this, int places)
  {
    int multipler = (int)Math.Pow(10, places);
    return Decimal.Truncate(@this * multipler) / multipler;
  }
}

Otros consejos

Puede utilizar: Math.Round(number,2); para redondear un número de dos cifras decimales

.

esta sobrecarga específica de Math.Round de ejemplos.

Usted no quiere darle formato a continuación, pero a su alrededor. Pruebe la función Math.Round.

Tome un vistazo a Math.Round

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top