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 en el mundo real de truncar un decimal en C #. Esto podría convertirse a 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;
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)