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)