Página 1 de 1
Redondeo Bancario
Publicado: Mié Mar 07, 2018 7:24 pm
por ramonzea
Hola:
Existe en Habour, MiniGW o Xailer, una función para el redondeo bancario?
Cambia la forma de redondear según la siguiente liga:
https://msdn.microsoft.com/es-mx/librar ... -snippet-2
Gracias de antemano.
Re: Redondeo Bancario
Publicado: Vie Mar 09, 2018 4:03 pm
por jvtecheto
Hola Ramon:
Una funcion podria ser esta:
No la he pulido mucho pero creo que funciona a partir de 0,5 redondea al alza que creo que es lo que buscas.
Código: Seleccionar todo
FUNCTION RoundBan( nCantidad )
LOCAL nEntero, nDecimal, nPos
LOCAL cNumero
cNumero :=Str(nCantidad)
nPos := RAt(".",cNumero)
nEntero := Val( SubStr(cNumero,1,nPos-1) )
nDecimal := Val( SubStr(cNumero,nPos+1,1 ) )
if (ndecimal >=5)
nDecimal := 1
Else
nDecimal := 0
Endif
nCantidad := nEntero + nDecimal
RETURN nCantidad
Saludos
Jose
Re: Redondeo Bancario
Publicado: Vie Mar 09, 2018 7:51 pm
por jvtecheto
Perdon , no habia visto que 100.5 debe ser 100
creo que asi...
Código: Seleccionar todo
FUNCTION RoundBan( nCantidad )
LOCAL nEntero, nDecimal, nPos
LOCAL cNumero
cNumero :=Str(nCantidad)
nPos := RAt(".",cNumero)
nEntero := Val( SubStr(cNumero,1,nPos-1) )
nDecimal := Val( SubStr(cNumero,nPos+1,1 ) )
IF (nDecimal > 5 )
nDecimal := 1
ELSEIF (nDecimal == 5 )
IF (SubStr(cNumero,nPos-1,1)!="0")
nDecimal := 1
ELSE
nDecimal := 0
ENDIF
ELSE
nDecimal := 0
ENDIF
nCantidad := nEntero + nDecimal
RETURN nCantidad