Page 1 of 1
Redondear centena
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sat May 07, 2022 6:40 pm
by leandro
Ya encontré la solución jejejejeje
- Code: Select all Expand view
#include "fivewin.ch"
FUNCTION Main()
Local nRedondear := 1859
Local nRodondeado := round(nRedondear,-2)
msginfo(nRodondeado)
Return nil
Re: Redondear centena
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sat May 07, 2022 8:50 pm
by cnavarro
- Code: Select all Expand view
? Val( Str( 2525 / 100, 6, 0 ) ) * 100
Re: Redondear centena
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon May 09, 2022 6:39 am
by gmart1
Hola, puedes probar usando el resto de la división.
- Code: Select all Expand view
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sat May 14, 2022 1:26 am
by cnavarro
- Code: Select all Expand view
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
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
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
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)