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
'*******************************************************************************
'* 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...
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/
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...
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)
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...
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
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
¿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.