Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Funcion de Redondeo (https://www.clubdelphi.com/foros/showthread.php?t=71403)

ZiriusB 16-12-2010 20:16:19

Funcion de Redondeo
 
Buenas amigos, tengo un pequeño problema y nada mejor que esta comunidad para encontrar una solución, tengo esta formula que encontre en la web para el redondeo de un numero... pero me lanza un error en esta linea:

p10 := Power(10, cifrasSig);

el "Power" me lanza el error "Undeclarated identifier: Power"

esta es la formula completa; espero podais ayudarme!

Código Delphi [-]
function Redondear(numero : real ; cifrasSig : integer) : real;
  var p10 : extended;

begin

{ siendo 2 el caso más frecuente }
    if (cifrasSig = 2) then
      result := round(numero * 100) / 100
    else

      begin
        p10 := Power(10, cifrasSig);
        result := round(numero * p10) / p10;
      end;
end;

rgstuamigo 16-12-2010 20:42:35

Cita:

Empezado por ZiriusB (Mensaje 385184)
... pero me lanza un error en esta linea:

p10 := Power(10, cifrasSig);

el "Power" me lanza el error "Undeclarated identifier: Power"

...

Ya miraste la ayuda(F1) de Delphi sobre la Función Power?;)
El error que dices es por que no has agregado al Uses la unidad Math donde se encuentra la funcion Power;)
Código Delphi [-]
uses ...,Math;//<--agrego la unidad Math ;)
De todas formas creo que deberías comentar cómo quieres redondear, ya que delphi posee funciones que ya te hacen eso ;).
Saludos...:)

ZiriusB 16-12-2010 21:05:34

Bueno tengo varios combobox con numeros: 1,2,3,4 de ahi no pasan...al sumarlos todos me dan valores como 3,56 porque tengo una funcion que me divide el numero resultante entre el total de combobox...

Lo que quiero es redondear al numero mas cercano...es decir,

si el resultado es 3,78 que se vaya a 4

si el resultado es 3,27 que se vaya a 3

Gracias por tu ayuda, probare lo que me dijiste...

ZiriusB 16-12-2010 21:07:35

me funciono lo de la uses,

amigo como puedo hacer para que en el boton en donde meda el resultado se redondee de una vez, como puedo utilizar la formula ahi...disculpa mi ignorancia, soy nuevo en delphi!

Gracias por tu ayuda!

rgstuamigo 16-12-2010 21:18:37

Cita:

Empezado por ZiriusB (Mensaje 385192)
Lo que quiero es redondear al numero mas cercano...es decir,

si el resultado es 3,78 que se vaya a 4

si el resultado es 3,27 que se vaya a 3
...

Pues para eso tienes la funcion "Round" de la Unidad System.;)
Saludos...:)

ZiriusB 16-12-2010 21:36:13

me puedes mostrar por favor como podria utilizarla en mi TEDIT, como dije soy nuevo en delphi...

Disculpa la ignorancia y gracias por tu ayuda!

rgstuamigo 16-12-2010 21:52:16

Pues usando el evento OnClick de un boton y teniendo un edit para meter los datos pues se puede hacer algo así:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
Var a : Double;
     b : Int64;
     c : String;
begin
    a:=StrToFloat(Edit1.Text);// Obtengo el valor Float del texto del Edit en mi varible "a"
    b:=Round(a);// Hago el redondeo y obtengo dicho valor en mi varible "b"
    c:=IntToStr(b);// hago la conversión de Entero a String
    ShowMessage(c);//muestro el valor redondeado final
end;

O así tambien(sin usar variables) >
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(Round(StrToFloat(Edit1.Text))));
end;
Saludos...:)


La franja horaria es GMT +2. Ahora son las 18:34:04.

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