Hola colegas, necesito redondear numero
ejemplo
del 1 al 5 ejemplo $ 785 que quede en $780
del 6 al 9 ejemplo $ 786 que quede en $ 790
y si es 0 ejemplo $ 780 que quede en $ 780
Saludos
Hola colegas, necesito redondear numero
ejemplo
del 1 al 5 ejemplo $ 785 que quede en $780
del 6 al 9 ejemplo $ 786 que quede en $ 790
y si es 0 ejemplo $ 780 que quede en $ 780
Saludos
José:
Apóyate en el operador %, te devuelve el sobrante o remanente.
ejemplo, puedes usar
785 % 10 => 5 el sobrante es menor o igual a 5 le restas este sobrante a 785 - 5 = 780
786 % 10 => 6 el sobrante es mayor a 5 aumentas el resultado de 10 - 6 = 4 y te quedará 790
Saludos
Gracias Armando, cree esta funcion
FUNCTION Redondear(numero)
*---------------------------
Local val_num := Val(SubStr(Str(numero,9),-1))
Local Valor := 0
If val_num>=1 .AND. val_num<=5
valor = numero - val_num
ElseIf val_num>= 6 .AND. val_num<= 9
valor = numero + (10-val_num)
Else
valor:=numero
Endif
Return(valor)
Pero no se si se podria mejorar
saludos
José:
Creo que esto puede funcionar
FUNCTION Redondear(nValor)
IF nValor % 10 <= 5
nValor := nValor - (nValor % 10)
ELSE
nValor := nValor + (10 - nValor % 10)
ENDIF
RETURN(nValor)
Pruébalo, los hice de salida y asumo que en valor no hay fracciones decimales
Saludos
Gracias armando, quedo muy bien..
FUNCTION Redondear(nValor)
IF nValor % 10 <= 5
nValor := nValor - (nValor % 10)
ELSE
nValor := nValor + (10 - nValor % 10)
ENDIF
RETURN(Round(nValor,0))
saludos
Function FRound( x, y )
Local nDeci := 2 // error en el compilador
Default y := 2
nDeci := Set(3, y )
If x >= 0
x := Val( Str( Int( x * 10 ** y + 0.5000001 ) ) ) / 10 ** y
Else
x := Val( Str( Int( x * 10 ** y - 0.5000001 ) ) ) / 10 ** y
Endif
Set(3, nDeci ) // set decimal
Return(x)José:
Pasando un parámetro más a la función, en lugar de la constante 10, y con pequeños ajustes
podrás redondear a Unidades, Decenas, Centenas, etc etc.
Saludos
Muchas Gracias
Saludos