jueves, 14 de abril de 2011

Truncar decimales en C#

No deja de ser sorprendente que no hay un método de decimal en C# para truncar decimales. He visto por ahí formas de hacerlo con formatos y al final he optado por multiplicar por 10^decimales, truncar quitando los decimales y volver a dividir entre 10^decimales. Lo necesitaba para poder truncar a 2 decimales, pero me he hecho un método genérico.


private static decimal Truncate(decimal pImporte, int pNumDecimales)
{
    decimal wRt = 0;
    decimal wPot10 = 1;

    //for (int i = 1; i <= pNumDecimales; i++)
    //{
    //    wPot10 = wPot10 * 10;
    //}
  
    wRt = pImporte * wPot10;
    wRt = decimal.Truncate(wRt);
    wRt = wRt / wPot10;
    //wRt = decimal.Round(wRt, 2);

    return wRt;
}