Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

duda sobre la función redondear

946 views
Skip to first unread message

Daz

unread,
Feb 15, 2010, 10:11:43 AM2/15/10
to
Hola

Imaginar esta expresi�n:

=redondear(1,445;2)

El resultado que me da la funci�n es 1,44

Estoy haciendo una base de datos para controlar mi facturaci�n ya efectos de
Hacienda el "5" se redondea hacia arriba, es decir: 1,445 es 1,45 y no 1,44

�Sab�is como puedo como puedo decirle a la funci�n como debe redondear?

Espero haberme explicado, muchas gracias por vuestra ayuda,

Daz

Emilio

unread,
Feb 15, 2010, 10:34:01 AM2/15/10
to
--------------------------------------------------------------------------
�Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvi� o no la respuesta dada. Muchas gracias
--------------------------------------------------------------------------
Hola!
Round aplica el redondeo bancario am�ricano, el redondeo que aplicamos en
Espa�a has de calcularlo tu, por ejemplo mediante esta funci�n que prepar�
el siglo pasado ;-))

'*******************************************************************************
'* Redondeo
'* funci�n que redondea un valor, pasado como argumento, con un n�mero de
'* Argumentos: dblValor
'* bytDecimales = > (opcional) n�mero de decimales a redondear
'* uso: Redondeo, 2
'* Si utilizas este c�digo, respeta la autor�a y los cr�ditos
'* ESH 30/07/00 18:30
'* ESH 26/08/09 17:54 n�mero de decimales opcional
'*******************************************************************************

Public Function Redondeo(dblValor As Double, Optional bytDecimales As Byte =
0)

If Int(dblValor * 10 ^ bytDecimales + 0.5) > Int(dblValor * 10 ^
bytDecimales) Then
Redondeo = Int(dblValor * 10 ^ bytDecimales + 0.5) / 10 ^ bytDecimales
Else
Redondeo = Int(dblValor * 10 ^ bytDecimales) / 10 ^ bytDecimales
End If

End Function ' Redondeo

Saludos a todos
Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio

"Daz" <dazd...@terra.es> escribi� en el mensaje
news:564EDB61-8405-4BF9...@microsoft.com...

Patxi Sanz

unread,
Feb 15, 2010, 11:12:20 AM2/15/10
to
Que yo sepa, con Format o FormatNumber se puede conseguir lo mismo, con
menos trabajo:

Format(1.445, "0.00")

FormatNumber(1.445, 2)

Los 2 devuelven 1,45 y no necesitas tanto c�digo y condiciones ;-)

--
Un saludo,


Patxi Sanz
Tudela (NA)
http://www.pasa.es.tt/

Daz

unread,
Feb 15, 2010, 12:41:59 PM2/15/10
to
Hola

Quiz�s no me expliqu� bien el problema no es de formato, el problema es que
en los c�lculos que se van arrastrando quiero que solo tenga en cuenta dos
decimales, y el formato de decimales tiene que ser el que Mama "Hacienda"
nos dice, es decir: 1,445 = 1,44 mientras que 1,446 = 1,45

La f�rmula de redondeo de access no se comporta de esta forma, o yo no s�
utilizarla.

Saludos

"Patxi Sanz" <patxisanz[ARROBA]yahoo[PUNTO]es> escribi� en el mensaje de
noticias news:%23q8Zoml...@TK2MSFTNGP04.phx.gbl...

emiliov

unread,
Feb 15, 2010, 2:07:02 PM2/15/10
to
Hola Daz

Yo te iba a poner una función que utilizo para hacer eso, pero me gano
Emilio, la de el hace lo mismo, pero la respuesta de Patxi me gusto más de
hecho me hizo pensar que uso una función sin requerirla, ya probaste lo que
te dicen, porque yo lo probe y hace exactamente lo que quieres.

Nota: La función de Redondeo de access funciona si el último dígito después
del redondeo es siempre un número par redondea para abajo y si es non para
arriba


tambien puedes probar así:

=Redondeo (1.445 +0.000001,2)

Daz

unread,
Feb 15, 2010, 2:40:24 PM2/15/10
to
Hola

Acabo de comprobar que redacté mal mi pregunta:

Para Hacienda 1,440 o 1,441 o 1,442 o 1,443 o 1,444 o 1,445 es igual a 1,44
el problema es que la función redondear de access el valor 1,445 me la
redondea a 1,45

¿Qué función propones tu?


"emiliov" <emi...@discussions.microsoft.com> escribió en el mensaje de
noticias news:AEC2BC5F-FBC0-4A63...@microsoft.com...

emiliov

unread,
Feb 15, 2010, 3:17:01 PM2/15/10
to
Hola Daz

Yo uso esta función en un modulo

Public Function Round(value As Variant, Decimals As Integer)
If Decimals >= 0 Then
Round = Int(value * Decimals + 0.5) / Decimals
End If
End Function

Y donde quiero el redondeo pongo:

Round(Campoaredondear,100)

Pero si pongo lo que te puso Patxi o la función o lo otro que te indique al
final todos te dan lo mismo que buscas pero tu escoge que es mas facil.

Dato Función Round =Formato([Texto0],"Fijo") =Redondear([Texto0]+0.0001,100)
1.441 1.44 1.44
1.44
1.442 1.44 1.44
1.44
1.443 1.44 1.44
1.44
1.444 1.44 1.44
1.44
1.445 1.45 1.45
1.45
1.446 1.45 1.45
1.45
1.447 1.45 1.45
1.45
1.448 1.45 1.45
1.45
1.449 1.45 1.45
1.45

emiliov

unread,
Feb 15, 2010, 3:31:02 PM2/15/10
to
Haber Daz
Perdon No lei bien
1,446 , 1,447, 1,448 y 1,449 que deben dar 1.45 o 1.44

emiliov

unread,
Feb 15, 2010, 4:55:29 PM2/15/10
to
Creo Daz que ya te entendi:
para que te de 1.44 en 1.441, 1.442, 1.443, 1.444 y 1.445
Para que te de 1.45 en 1.446, 1.447, 1.448, 1.449

o usas:

=Redondear([Tucampo]+0.0001,100)

o la función modificada:

Public Function Round(value As Variant, Decimals As Integer)
If Decimals >= 0 Then

Round = Int(value * Decimals + 0.4) / Decimals
End If
End Function

Patxi Sanz

unread,
Feb 16, 2010, 2:36:53 PM2/16/10
to
Que yo sepa, todas las soluciones que te han indicado tienen en cuenta lo
que indicas.

¿Qué tienes que hacer siempre las operaciones con 2 decimales? Entonces,
tendrás que usar un método u otro para que todos los resultados sena con 2
decimales y no arrastrar más decimales.

¿Que como los cálculos son con números, y como las funciones devuelven
textos, puedes obtener datos erróneos? Hay más funciones y posibilidades en
VBA. Por ejemplo, puedes multiplicar por 100 y recoger sólo la parte entera
con Int o Fix. Trabajar siempre con partes enteras y al resultado final
dividirlo entre 100.

0 new messages