Page 1 of 1
Redondear centena
Posted: Sat May 07, 2022 6:31 pm
by leandro
Hola buenas tardes ?
De nuevo por aquí molestando, surge la necesidad de poder hacer el redondeo a la centena, con el fin de evitar problemas con el cambio cuando pagan en efectivo.
E intentando con la función round(), pero esta parece que aplica solo para los decimales.
Ejemplo:
Total a pagar $1.257
Debe quedar $1.200
Total a pagar $5.856
Debe quedar $5.800
De antemano gracias
Re: Redondear centena
Posted: Sat May 07, 2022 6:40 pm
by leandro
Ya encontré la solución jejejejeje
Code: Select all | Expand
#include "fivewin.ch"
FUNCTION Main()
Local nRedondear := 1859
Local nRodondeado := round(nRedondear,-2)
msginfo(nRodondeado)
Return nil
Re: Redondear centena
Posted: Sat May 07, 2022 8:50 pm
by cnavarro
Re: Redondear centena
Posted: Sun May 08, 2022 5:58 pm
by leandro
Cristobal, muchas gracias por responder.
Me surge una idea? podemos adaptar esa funciono que hiciste para que aproxime a 50 y no a 100.
Ejemplo:
$4785 -> $4800
$4727 -> $4750
$4611 -> $4600
$4673 -> $4650
De antemano gracias
Re: Redondear centena
Posted: Mon May 09, 2022 6:39 am
by gmart1
Hola, puedes probar usando el resto de la división.
Code: Select all | Expand
nAproximar := 50
nRedondear := 4785
nResto := nRedondear % nAproximar
? nRedondear - IF ( nResto < (nAproximar / 2), nResto, - (nResto - nAproximar) )
No lo he probado, pero creo que puede funcionar.
Un saludo.
Re: Redondear centena
Posted: Sat May 14, 2022 1:26 am
by cnavarro
Code: Select all | Expand
function Main()
local n
n := 4785
? if( Round( n / 100, 0 ) > Int( n / 100 ), Round( n / 100, 0 ) * 100, Round( n / 100, 0 ) * 100 + 50 )
n := 4727
? if( Round( n / 100, 0 ) > Int( n / 100 ), Round( n / 100, 0 ) * 100, Round( n / 100, 0 ) * 100 + 50 )
Return nil
Re: Redondear centena
Posted: Sat May 14, 2022 12:22 pm
by leandro
Excelente amigo, muchísimas gracias
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Re: Redondear centena
Posted: Thu May 19, 2022 3:42 pm
by Euclides
Hola, mas simples...
nAproximar := 50
nRedondear := 47085
? round(nRedondear / nAproximar, 0) * nAproximar
Saludos, Euclides
Re: Redondear centena
Posted: Fri May 20, 2022 11:04 pm
by leandro
Euclides, muchas gracias por la ayuda, excelente solución también
![Very Happy :D](./images/smilies/icon_biggrin.gif)