![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() ![]() Les agradezco de antemano su ayuda. Román ![]() |
#2
|
||||
|
||||
Hay varios hilos que hablan al respecto entre ellos esta este por ejemplo: http://clubdelphi.com/foros/showthre...ight=decimales
Y muchos mas, Aqui una lista de unos tantos: http://clubdelphi.com/foros/search.php?searchid=400399 En resumen, hay que declarar los campos como Numeric(x,y) y usar la funcion RoundTo. Espero te sirva.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
Nota: El Delphi 5 no trae la funcion RoundTo pero es posible hacer un simple copiar y pegar de la misma desde un delphi de una version mas adelantada y funciona sin necesidad de hacer ninguna clase de "Truquito" ni nada que se le paresca (Yo lo he probado ya).
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#4
|
||||
|
||||
yo tengo una rutina para redondear las cantidades float a dos decimales porque tengo el mismo problema. antes de guardar datos la aplico y solucionado el problema
![]() no recuerdo el nombre del autor, pero sigo agradeciendole esta rutina fCostoult:=RoundN((grdMov.Floats[7,i]/grdMov.Floats[4,i]),2) d es el numero de decimales que vas a querer function TFCapfac.RoundN(x: Extended; d: Integer): Extended; // RoundN(123.456, 0) = 123.00 // RoundN(123.456, 2) = 123.46 // RoundN(123456, -3) = 123000 const t: array [0..12] of int64 = (1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000); begin if Abs(d) > 12 then raise ERangeError.Create('RoundN: Value must be in -12..12'); if d = 0 then Result := Int(x) + Int(Frac(x) * 2) else if d > 0 then begin x := x * t[d]; Result := (Int(x) + Int(Frac(x) * 2)) / t[d]; end else begin // d < 0 x := x / t[-d]; Result := (Int(x) + Int(Frac(x) * 2)) * t[-d]; end; end; |
![]() |
|
|
![]() |
|