Redondear centena

Post Reply
User avatar
leandro
Posts: 1728
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 24 times
Been thanked: 4 times
Contact:

Redondear centena

Post 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
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
User avatar
leandro
Posts: 1728
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 24 times
Been thanked: 4 times
Contact:

Re: Redondear centena

Post 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
 
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Redondear centena

Post by cnavarro »

Code: Select all | Expand


   ? Val( Str( 2525 / 100, 6, 0 ) ) * 100
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
leandro
Posts: 1728
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 24 times
Been thanked: 4 times
Contact:

Re: Redondear centena

Post 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
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
gmart1
Posts: 80
Joined: Wed Oct 24, 2007 12:48 pm
Location: Alhaurin de la Torre (MALAGA)

Re: Redondear centena

Post 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.
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Redondear centena

Post 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
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
leandro
Posts: 1728
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 24 times
Been thanked: 4 times
Contact:

Re: Redondear centena

Post by leandro »

Excelente amigo, muchísimas gracias :D
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
User avatar
Euclides
Posts: 156
Joined: Wed Mar 28, 2007 1:19 pm

Re: Redondear centena

Post by Euclides »

Hola, mas simples...

nAproximar := 50
nRedondear := 47085
? round(nRedondear / nAproximar, 0) * nAproximar

Saludos, Euclides
User avatar
leandro
Posts: 1728
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 24 times
Been thanked: 4 times
Contact:

Re: Redondear centena

Post by leandro »

Euclides, muchas gracias por la ayuda, excelente solución también :D
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
Post Reply