Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   truncar un float (https://www.clubdelphi.com/foros/showthread.php?t=29250)

federiconqn21 17-01-2006 13:35:15

truncar un float
 
Hola:quisiera saber como truncar un valor float.
por ejemplo:si tengo una base de datos,y en una tabla tengo un campo del tipo float con el valor 5,3.al recuperar ese valor me lo devuelve como 5.299999999999999999....
como hago para truncarlo a 2 decimales solamente?.
Gracias a quien pueda ayudarme

jhonny 17-01-2006 13:54:04

Bueno, este es uno de los temas que ya se trato bastante en el pasado un ejemplo de ello seria este enlace http://www.clubdelphi.com/foros/showthread.php?t=27232 y otro serian los varios "Temas relacionados" que aparecen al final de esta pagina.

delphi.com.ar 17-01-2006 13:57:15

Si lo quieres hacer desde el motor, dependerá del motor que utilizas.
Si lo quieres hacer desde el cliente, y tienes una versión superior a Delphi 5, puedes utilizar las funciones de redondeo: RoundTo, SimpleRoundTo o truncarlo con algo como:
Código Delphi [-]
 
function SimpleTrunc(const AValue: Double; const ADigit: TRoundToRange = -2): Double;
var
  LFactor: Double;
begin
  LFactor := IntPower(10, ADigit);
  Result := Trunc(AValue / LFactor) * LFactor;
end;

jhonny 17-01-2006 13:58:51

A ver, se me olvidaba decirte que en algunos Post anteriores aconcejan que es mejor usar el double precision o el Numeric(15,2) que en ultimas viene a ser lo mismo.

jhonny 17-01-2006 14:06:08

Tambien debo decir que a mi me sucedio el caso que expone Federico Firenze y fue que yo usaba Delphi5 y fue precisamente a él quien le pedi el favor de que me diera "Copia" de dicha función desde Delphi7 (Muy amablemente como siempre me colaboro con el asunto, Gracias Federico) asi pues que solo la puse en una unidad global del proyecto y la verdad funciono muy bien...

Nota: Para agregar algo al mensaje de Federico Firenze...

El tipo TRoundToRange es el siguiente:

Código Delphi [-]
type
  TRoundToRange = -37..37;


La franja horaria es GMT +2. Ahora son las 07:08:17.

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