Redondeo de decimales

09/09/2004 - 19:41 por Tiago Barro | Informe spam
Hola a todos,
me he dado cuenta de un problema que ocurre con el redondeo de los
decimales:


En SqlServer:
PRINT ROUND(3.45,1) = 3.50 Correcto

En Vb.Net
Math.Round(3.45,1)= 3.4 Incorrecto!!!

No sé si hay otra función que realice el redondeo correctamente, pero no he
sabido encontrarla. De momento utilizo el la función Format que sí me
realiza el redondeo correctamente:

Format(3.45, "#,##0.0;-#,##0.0;0.0") = 3.5 Correcto

¿Sabeis si existe una función que realice el redondeo correctamente en lugar
de utilizar la función Format?

Gracias y un saludo
Santiago Barro
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
09/09/2004 - 21:00 | Informe spam
¿Sabeis si existe una función que realice el redondeo correctamente
en lugar de utilizar la función Format?



El redondeo de Round es correcto, el problema es que usa el redondeo de
banquero que previene que al hacer muchos redondeos en calculos el resultado
se desvie hacia arriba o abajo. Usa esta funcion en su lugar:

Public Function Redondear(ByVal d As Double, ByVal decimales As Integer) As
Double
Redondear = Math.Floor(d * (10 ^ decimales) + 0.5) / (10 ^ decimales)
End Function

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Preguntas similares