Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Manejo de decimales en campo calculado (https://www.clubdelphi.com/foros/showthread.php?t=72333)

Fita 11-02-2011 00:00:10

Manejo de decimales en campo calculado
 
Hola a todos...

Tengo varias tablas con un campo "Total" que es calculado.
Al ser calculado se genera automáticamente con un tamaño de 18,6 y esto me esta dando problemas a la hora de redondear los centavos.
Utilizo la función formatFloat('#####0.00', Total.AsFloat) pero como el importe es (x ej) 21.654 el ultimo dígito se trunca.
Esto genera una diferencia, en general, de 1 centavo que no puedo redondear.

alguna idea ?

Desde ya gracias

ecfisa 11-02-2011 00:49:36

Hola Fita.

Código Delphi [-]
  FormatFloat('#####0.000', Total.AsFloat)

Pero creo que más simple usar la propiedad DisplayFormat del campo Total desde el Object Inspector.
O si preferís por código:
Código Delphi [-]
   Total.DisplayFormat:= '#####0.000';

Un saludo.

Caral 11-02-2011 01:03:37

Hola
Y la funcion Round ?.
Saludos

rastafarey 11-02-2011 01:31:52

Resp
 
Esto ya lo explique en un hilo mas no se cual. En dichi hilo di la explicacion de que es lo que pasa y por que pasa.

basicamente lo que pasa es que el manejador trata de incrementar la precion para poder alvergar el valor.

Sin mas explicacion esta es la solucion.

Ejemplo
TMONEDA es numerico(18, 4)
CAST(campo1*100/campo1 AS TMONEDA)
CAST(campo1*100/campo1 AS TMONEDA)

Por cada multiplicacion o division se incrementan los decimales del tipo.

Asi es como se debe solucionar por que de los contrario vas a tener mas

Fita 11-02-2011 02:05:13

Gracias a todos por las respuestas.

Hasta ahora lo he solucionado con Round()
Investigaré con la opción CAST

Un cordial saludo
Fita


La franja horaria es GMT +2. Ahora son las 04:36:08.

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