Función Round()

29/08/2005 - 13:31 por Mario Vázquez | Informe spam
Hola,

La función Round() del espacio de nombres Math redondea los números
decimales como en el ejemplo:

Round(0.5, 0) = 0

¿Existe alguna función que redondea así?
Round(0.5, 0) = 1

Gracias

Preguntas similare

Leer las respuestas

#1 Lord Voldemort
29/08/2005 - 16:53 | Informe spam
que FIX?


"Mario Vázquez" wrote in message
news:%23f%
Hola,

La función Round() del espacio de nombres Math redondea los números
decimales como en el ejemplo:

Round(0.5, 0) = 0

¿Existe alguna función que redondea así?
Round(0.5, 0) = 1

Gracias


Respuesta Responder a este mensaje
#2 Mario Vázquez
29/08/2005 - 18:09 | Informe spam
Gracias Lord,

Puse mal ejemplo. En realidad no quiero obtener un número entero, sinó
decimal.

Round( 0.55, 1 ) devuelve 0.5
y yo quiero conseguir 0.6
En los redondeos financieros, los decimales 0 a 4 se redondean hacia abajo,
y 5 a 9 hacia arriba (la mitad para cada sentido)

Saludos,
Mario Vázquez


"Lord Voldemort" <@@> escribió en el mensaje
news:uFs6$
que FIX?


"Mario Vázquez" wrote in message
news:%23f%
> Hola,
>
> La función Round() del espacio de nombres Math redondea los números
> decimales como en el ejemplo:
>
> Round(0.5, 0) = 0
>
> ¿Existe alguna función que redondea así?
> Round(0.5, 0) = 1
>
> Gracias
>
>


Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
30/08/2005 - 05:47 | Informe spam
El asunto es que Round usa el llamado redondeo bancario, donde redondear
hacia arriba o abajo depende si la cifra anterior al 5 es par o impar. Para
el redondeo que quiers puedes crear tu propia funcion:

Public Shared Function Redondear(ByVal numero As Double, ByVal decimales As
Integer) As Double

If decimales < 0 or decimales > 15 Then Throw New ArgumentException()

Dim factor As Double = Math.Pow(10, decimales)

Return Math.Floor(numero * factor + .5) / factor

End Function

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 Mario Vázquez
30/08/2005 - 09:48 | Informe spam
Gracias Eduardo,
aunque me parece realmente extraño que no exista ninguna función predefinida
para algo tan común como un redondeo monetario.

Saludos,
Mario Vázquez

"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:
El asunto es que Round usa el llamado redondeo bancario, donde redondear
hacia arriba o abajo depende si la cifra anterior al 5 es par o impar.


Para
el redondeo que quiers puedes crear tu propia funcion:

Public Shared Function Redondear(ByVal numero As Double, ByVal decimales


As
Integer) As Double

If decimales < 0 or decimales > 15 Then Throw New ArgumentException()

Dim factor As Double = Math.Pow(10, decimales)

Return Math.Floor(numero * factor + .5) / factor

End Function

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



http://mvp.support.microsoft.com/pr...4EF5A4191C


Respuesta Responder a este mensaje
#5 Guillermo Peralta
30/08/2005 - 16:03 | Informe spam
Hola Mario fijate si te sirve lo siguiente:
Dim a As Decimal

a = CDec(0.55)

MsgBox(CDec(a.ToString("C1")))

Saludos
Guillermo
AG - CBA - ARG


"Mario Vázquez" escribió en el mensaje
news:
Gracias Lord,

Puse mal ejemplo. En realidad no quiero obtener un número entero, sinó
decimal.

Round( 0.55, 1 ) devuelve 0.5
y yo quiero conseguir 0.6
En los redondeos financieros, los decimales 0 a 4 se redondean hacia
abajo,
y 5 a 9 hacia arriba (la mitad para cada sentido)

Saludos,
Mario Vázquez


"Lord Voldemort" <@@> escribió en el mensaje
news:uFs6$
que FIX?


"Mario Vázquez" wrote in message
news:%23f%
> Hola,
>
> La función Round() del espacio de nombres Math redondea los números
> decimales como en el ejemplo:
>
> Round(0.5, 0) = 0
>
> ¿Existe alguna función que redondea así?
> Round(0.5, 0) = 1
>
> Gracias
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida