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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Santiago Barro
10/09/2004 - 07:58 | Informe spam
Muchas gracias Eduardo.
Me sorprende que no haya una función de redondeo tipo moneda, pero
utilizaremos la función que me has comentado.

Un saludo.

"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
> ¿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


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida