Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Trabajar con decimales y formatos (https://www.clubdelphi.com/foros/showthread.php?t=20880)

ElDuc 28-04-2005 13:03:53

Trabajar con decimales y formatos
 
Intento redondear decimales con "RoundTo" y no me funciona bien, porque redondea a partir del 6:
RoundTo(12.346,-2)=12.35. Correcto.
RoundTo(12.345,-2)=12.34 y debería ser 12.35.

Lo mismo me pasa con FloatToStrF(12.345,ffNumber,15,2)=12.34.

¿Podéis ayudarme?

TheRafa 28-04-2005 15:34:32

Redondeo Matemático
 
Yo utilizo esta función ya que el redondeo del delphi funciona más o menos como tu dices, incluso un poco más raro ya que el cinco unas veces lo redondea hacia arriba y otras hacia abajo.


function Redondeo(Nro: Double; Dec: Integer): Double;
var
Cad, Cad1, Cad2: String;
Signo, Aux: Double;
begin
try
If Not CadenaVacia(FormatFloat('################.#########',Abs(Nro)))
Then
Begin
If abs(Nro) = Nro Then Signo := 1 Else Signo := (-1);
Aux := Abs(Nro*Power(10,Dec+1));
If scl(',',FloatToStr(Aux)) <> 0
Then Aux := StrToFloat(copy(FloatToStr(Aux),1,scl(',',FloatToStr(Aux))-1));
If Dch(FloatToStr(Aux),1) >= '5' Then Aux := Aux + 10;
Aux := StrToFloat(copy(FloatToStr(Aux),1, length(FloatToStr(Aux))-1));
Redondeo := (Aux/Power(10,Dec))*signo;
End
Else Redondeo := 0;
except
Redondeo := 0;
End;
End;

Elfoscuro 28-04-2005 15:41:24

¿Y algo así no funcionaría?

Código Delphi [-]
entrada:=entrada*100
if entrada-int(entrada)>=0,5 then
    entrada:=int(entrada)+1
  else
    entrada:=int(entrada);
entrada:=entrada/100;

En entrada tenemos el número original y el 100 es para dos decimales, 1000 para 3, etc. Por otra parte... ¿existe la funciona int? ¿o es trunc? Vamos lo que quería con esa función era coger la parte entera, sin redondear, es decir int(1,1)=1 y int(1,7)=1.

Un saludo


La franja horaria es GMT +2. Ahora son las 22:44:34.

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