In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Redondeo Bancario

Foro público de Xailer en español
User avatar
ramonzea
Posts: 61
Joined: Tue Sep 15, 2015 6:42 am
Location: México
Contact:

Redondeo Bancario

Postby ramonzea » Wed Mar 07, 2018 7:24 pm

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/library/k4e2bye2.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

Gracias de antemano.
jvtecheto
Posts: 115
Joined: Thu Dec 19, 2013 1:18 pm

Re: Redondeo Bancario

Postby jvtecheto » Fri Mar 09, 2018 4:03 pm

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.

Code: Select all

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
jvtecheto
Posts: 115
Joined: Thu Dec 19, 2013 1:18 pm

Re: Redondeo Bancario

Postby jvtecheto » Fri Mar 09, 2018 7:51 pm

Perdon , no habia visto que 100.5 debe ser 100

creo que asi...

Code: Select all

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

Return to “Spanish”