Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Procedimiento para redondear Euros (https://www.clubdelphi.com/foros/showthread.php?t=80703)

dec 01-07-2006 02:16:29

Procedimiento para redondear Euros
 
Código SQL [-]
/*
  Redondeo a 2 decimales, del modo que si el 3er. decimal es 5 ó mayor
  que 5, se aumenta en uno el 2º decimal, si no, se deja igual
*/

SET TERM ^ ;

CREATE PROCEDURE "REDONDEAR2"
("NUMERO" NUMERIC(14, 4))
RETURNS
("RESULTADO" NUMERIC(14, 2))
AS
  DECLARE VARIABLE TEMPNUM FLOAT;
  DECLARE VARIABLE SIGNO INTEGER;
  DECLARE VARIABLE PARTE_ENTERA INTEGER;
BEGIN
 NUMERO = NUMERO*1000;
 PARTE_ENTERA = NUMERO;
 TEMPNUM = MOD(PARTE_ENTERA,10);
 SIGNO = 1;
 IF (NUMERO < 0) THEN SIGNO = -1;
 IF (ABS(TEMPNUM) >= 5) THEN
   PARTE_ENTERA = (PARTE_ENTERA+(SIGNO*10));
 RESULTADO = PARTE_ENTERA/10;
 RESULTADO = RESULTADO/100;
 SUSPEND;
END ^
SET TERM ; ^
COMMIT WORK;

Me parece que el procedimiento esta bastante claro. Solo cabe señalar que hace uso de dos funciones UDF : ABS y MOD. Que estan incluidas en la libreria ib_udf.dll que viene con interbase.

Aunque este procedimiento solo realiza el redondeo a dos decimales, se puede modifocar facilmente para que lo realiza a tantos decimales como se quiera.


La franja horaria es GMT +2. Ahora son las 19:47:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi