Saltar al contenido

Truncar dos decimales sin redondear

Te recomendamos que revises esta solución en un ambiente controlado antes de enviarlo a producción, un saludo.

Solución:

value = Math.Truncate(100 * value) / 100;

Tenga en cuenta que fracciones como estas no se pueden representar con precisión en coma flotante.

Sería más útil tener una función completa para el uso real de truncar un decimal en C#. Esto podría convertirse en un método de extensión decimal bastante fácil si quisiera:

public decimal TruncateDecimal(decimal value, int precision)

    decimal step = (decimal)Math.Pow(10, precision);
    decimal tmp = Math.Truncate(step * value);
    return tmp / step;

Si necesita VB.NET intente esto:

Function TruncateDecimal(value As Decimal, precision As Integer) As Decimal
    Dim stepper As Decimal = Math.Pow(10, precision)
    Dim tmp As Decimal = Math.Truncate(stepper * value)
    Return tmp / stepper
End Function

Entonces úsalo así:

decimal result = TruncateDecimal(0.275, 2);

o

Dim result As Decimal = TruncateDecimal(0.275, 2)

Método universal y rápido (sin Math.Pow() / multiplicación) para System.Decimal:

decimal Truncate(decimal d, byte decimals)

    decimal r = Math.Round(d, decimals);

    if (d > 0 && r > d)
    
        return r - new decimal(1, 0, 0, false, decimals);
    
    else if (d < 0 && r < d)
    
        return r + new decimal(1, 0, 0, false, decimals);
    

    return r;

Te mostramos comentarios y calificaciones

Si tienes algún recelo y forma de arreglar nuestro artículo puedes realizar un informe y con mucho placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *