Redondear valor superior con SQL Access
donlefou
Mensajes publicados
44
Estado
Miembro
-
buffon74 -
buffon74 -
Hola, me gustaría saber si en una consulta SQL se puede redondear un valor a su entero superior.
Existe la función Int(Número) que solo redondea al entero más cercano (0,3 se convierte en 0).
Quisiera redondear 0,3 a 1.
Existe la función Int(Número) que solo redondea al entero más cercano (0,3 se convierte en 0).
Quisiera redondear 0,3 a 1.
6 respuestas
Hola,
la función REDONDEAR no existe en ACCESS...
Pero se puede hacer un truco, hay que ver si el número es decimal (por lo que se mira el resultado del número menos su parte entera), en ese caso, se aísla la parte entera y se le añade uno, este es el objetivo de la consulta a continuación :
--
¡A+ Blux
la función REDONDEAR no existe en ACCESS...
Pero se puede hacer un truco, hay que ver si el número es decimal (por lo que se mira el resultado del número menos su parte entera), en ese caso, se aísla la parte entera y se le añade uno, este es el objetivo de la consulta a continuación :
SELECT TABTEST.[campo], IIf([campo]-Int([campo])=0,[campo],int([campo])+1) AS Resu FROM TABTEST; campo Resu 0,024 1 0,5 1 1 1 14,5 15 2,3 3 0,1 1 0,3 1 1 1 2 2 3 3 1245 1245 45 45 1256 1256 4584,256 4585 2 2 6 6 7 7 8 8 95 95 0,0003 1¡Y listo!
--
¡A+ Blux
"Los tontos se atreven a todo. Es incluso por eso que los reconocemos"
de hecho, la función int() no devuelve el número más cercano, sino el entero inferior (0,3==>0 pero 0,8==>0)
por eso int(nb+1) redondea hacia el entero más alto.
por eso int(nb+1) redondea hacia el entero más alto.
Hola
Creo que la función ROUND redondea al entero más cercano. Lo que puedes hacer es redondear y hacer +1 sobre el redondeo...
¡Hasta luego!
--
Creo que la función ROUND redondea al entero más cercano. Lo que puedes hacer es redondear y hacer +1 sobre el redondeo...
¡Hasta luego!
--
El tiempo perdido nunca se recupera. Entonces, sigamos sin hacer nada. J.Renard
de hecho, la función int() no devuelve el número más cercano sino el entero inferior (0,3==>0 pero 0,8==>0)
por eso int(nb+1) redondea hacia el entero más alto.
por eso int(nb+1) redondea hacia el entero más alto.
Para información, si puede ayudar a alguien
Función de redondeo superior en todos los casos en la expresión de una consulta access
x es un número real
iif(int(x)=x;x;int(x+1))
x=1
int(1) es igual a 1, por lo tanto da 1
x=1.1
int(1.1) no es igual a 1, por lo tanto da 1+1=2
Por supuesto, se puede reemplazar x por el valor de un campo, pero en este caso no olvides los corchetes
x es un campo
iif(int([x])=[x];[x];int([x]+1))
Atentamente
b747fred
Función de redondeo superior en todos los casos en la expresión de una consulta access
x es un número real
iif(int(x)=x;x;int(x+1))
x=1
int(1) es igual a 1, por lo tanto da 1
x=1.1
int(1.1) no es igual a 1, por lo tanto da 1+1=2
Por supuesto, se puede reemplazar x por el valor de un campo, pero en este caso no olvides los corchetes
x es un campo
iif(int([x])=[x];[x];int([x]+1))
Atentamente
b747fred
0,2 da 1 OK
1,4 da 2 OK
pero 1,6 da 3, y debe ser que 1,6 dé 2
Hay algo que hay que modificar en la fórmula, creo.
¿Problema con int? ¿con el cálculo de la diferencia? ¿Campos descritos en reales?
¿Qué versión de Access? (97 en mi caso...)
intenta mostrar únicamente el resultado de la diferencia :Para ver...
--
A+ Blux
--
A+ Blux