Ayuda para redondear un número hacia abajo

342 views
Skip to first unread message

Alejandro Garcia G.

unread,
Dec 30, 2017, 10:04:35 AM12/30/17
to Comunidad de Visual Foxpro en Español
Saludos, tengo una inquietud, deseo redondear un número para que me quede con 5 decimales pero que siempre me lo redondee hacia abajo, es decir, que si tiene mas decimales y haga el redondeo, nunca me dé o me redondee hacia arriba. Algo así:

Tengo 2, 286139 y deseo que quede a 2,28613 y no 2,8614 ¿Cómo puedo hacer? he usado esta que hace rato Luis publico en la comunidadvisualfoxpro pero no me da:

FUNCTION RedondearMenos(tnNro, tnPos)
RETURN FLOOR(tnNro / 1^tnPos) * 1^tnPos
ENDFUNC


Víctor Hugo Espínola Domínguez

unread,
Dec 30, 2017, 11:12:18 AM12/30/17
to publice...@googlegroups.com
>RETURN FLOOR(tnNro / 1^tnPos) * 1^tnPos

RETURN FLOOR(tnNro * 10^tnPos) / 10^tnPos

Saludos,
Víctor.
Lambaré - Paraguay.

Message has been deleted

ZeRoberto

unread,
Dec 30, 2017, 12:09:53 PM12/30/17
to publicesvfoxpro
Victor no sale a 5 digitos como quiere alejandro

Alejandro Garcia G.

unread,
Dec 30, 2017, 12:12:34 PM12/30/17
to Comunidad de Visual Foxpro en Español
Gracias Victor, sin embargo, me lo corta a 4, he ampliado a 100 en vez de 10 y sigue igual.

Víctor Hugo Espínola Domínguez

unread,
Dec 30, 2017, 4:05:44 PM12/30/17
to publice...@googlegroups.com
SET DECIMALS TO 6

Saludos,
Víctor.
Lambaré - Paraguay.


Víctor Hugo Espínola Domínguez

unread,
Dec 30, 2017, 4:06:04 PM12/30/17
to publice...@googlegroups.com
SET DECIMALS TO 6

Saludos,
Víctor.
Lambaré - Paraguay.


Foxshin

unread,
Dec 30, 2017, 5:50:09 PM12/30/17
to Comunidad de Visual Foxpro en Español
Hola ;D

Tal vez agregándole un CAST pueda solucionar el problema, el detalle sería saber cuál es el ancho máximo recomendable, pero bueno eso ya queda para optimizar

La función quedaría asi:
FUNCTION RedondearMenos(tnNro, tnPos)
   
*Le puse 20 porque me parece que es el máximo que soporta, aunque no sé exactamente que inconvenientes pueda tener.
   RETURN CAST
(FLOOR(tnNro * 10^tnPos) / 10^tnPos AS N(20,tnPos))
ENDFUNC

Pruébalo y nos cuentas.

Saludos

Bytes ^_^

Víctor Hugo Espínola Domínguez

unread,
Dec 30, 2017, 6:13:35 PM12/30/17
to publice...@googlegroups.com
Imagen integrada 1

Saludos,
Víctor.
Lambaré - Paraguay.


ZeRoberto

unread,
Dec 31, 2017, 6:58:59 AM12/31/17
to publicesvfoxpro
Bien ahí Victor.

Saludos
Message has been deleted

Carlos Miguel FARIAS

unread,
Jan 1, 2018, 5:26:16 PM1/1/18
to Grupo Fox
Mofarse de un enfermo no me parece muy ético que digamos.

El 1 de enero de 2018, 15:01, Dsan <douglas....@gmail.com> escribió:
A eso le llamo morir en su Ley...

El 30 de diciembre de 2017, 10:49, Jean Pierre Adonis De La Cruz Garcia <elconsultorinformatico@gmail.com> escribió:
LA FORMA MAS FACIL DE REDONDEAR HACIA ABAJO.

Resultado de imagen para GORDO COMIENDO

FULL COMIDA CHATARRA.
Message has been deleted

Francisco

unread,
Jan 2, 2018, 5:12:27 AM1/2/18
to Comunidad de Visual Foxpro en Español
A esa función de redondear a la baja se le ha llamado en muchos lenguajes de programación como "truncar" siempre y cuando acepte como parámetro el numero de decimales devueltos. En algunos lenguajes la función simplemente quita los decimales dejando un valor entero. Aún no se pq foxpro no tiene esa función incluida, pero obviamente se puede crear matemáticamente como te han mostrado.

Saludos a todos y Feliz 2018

Víctor Hugo Espínola Domínguez

unread,
Jan 2, 2018, 2:15:29 PM1/2/18
to publice...@googlegroups.com
Sí tiene la función truncar, pero con otro nombre: "INT"

Saludos,
Víctor.
Lambaré - Paraguay.


Esteban H.

unread,
Jan 2, 2018, 6:11:48 PM1/2/18
to publice...@googlegroups.com

Muy mal gusto el chiste…

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Jean Pierre Adonis De La Cruz Garcia
Enviado el: sábado, 30 de diciembre de 2017 01:49 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Ayuda para redondear un número hacia abajo

 

LA FORMA MAS FACIL DE REDONDEAR HACIA ABAJO.

 

Resultado de imagen para GORDO COMIENDO

 

FULL COMIDA CHATARRA.

El sábado, 30 de diciembre de 2017, 10:04:35 (UTC-5), Alejandro Garcia G. escribió:

Foxshin

unread,
Jan 3, 2018, 6:43:46 PM1/3/18
to Comunidad de Visual Foxpro en Español
Hola otra vez

Lo que indican Francisco y Victor es cierto, así que pensando en eso busqué (y encontré) una función que no recuerdo de dónde lo copié y retoqué (sólo un poco), seguramente lo obtuve de PortalFox, asi que debe funcionar de 10!. ;D

    *-------------------------------------------
   
* FUNCTION Truncar(tnNumero, tnDec)
   
* Trunca un número en "n" posiciones decimales, sólo hasta 14 cifras
   
* USO: Truncar(tnNumero, tnDecimales)
   
* PARAMETROS:
   
*   tnNumero    = Número a truncar
   
*   tnDecimales = Número de cifras decimales a truncar
   
* RETORNO: Numérico
   
*-------------------------------------------
    FUNCTION
Truncar(tnNumero AS Number, tnDecimales AS Integer)
        LOCAL lnBase
        tnDecimales
= IIF(EMPTY(tnDecimales),0,tnDecimales)
        m
.lnBase = INT(10 ^ tnDecimales)        && Para evitar inconvenientes al multiplicar
        RETURN ROUND
(INT(tnNumero * m.lnBase) / m.lnBase, tnDecimales)
    ENDFUNC

Lo pruebas y comentas.

Saludos

Bytes ^_^

Alejandro Garcia G.

unread,
Jan 4, 2018, 2:35:32 PM1/4/18
to Comunidad de Visual Foxpro en Español
Saludos y gracias a todos, hasta ahora vuelvo a ingresar. 

Gracias por las respuestas y he probado al función Truncar y creo que me va bien, así que voy a trabajar sobre ella ya que en las pruebas que he realizado me han dado los resultados deseados.


Feliz año una vez mas. 
Reply all
Reply to author
Forward
0 new messages