Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Funcion matematica (https://www.clubdelphi.com/foros/showthread.php?t=14925)

senpiterno 05-10-2004 02:07:20

Funcion matematica
 
Hola amigos..

Quisiera saber si exite en Delphi alguna funcion matematica que me permita elevar un entero a otro entero. Ejemplo 10^3 = 10*10*10 =1000...

Saludos...

jafl1965 05-10-2004 02:46:21

Unit System

Category arithmetic routines

function Sqr(X: Extended): Extended;
function Sqr(X: Integer): Integer;

Description

The Sqr function returns the square of the argument.

X is a floating-point expression. The result, of the same type as X, is the square of X, or X*X.


** Tomado del Help de Delphi.

roman 05-10-2004 04:39:35

Bueno, pero Sqr sólo da el cuadrado de un número y el compañero requiere el cubo. En general te puede servir la función Power, también de la unidad Math:

n^m = Power(n, m)

// Saludos

senpiterno 05-10-2004 06:56:20

Roman, ya habia averiguado sobre la funcion Power, pero al hacer una prueba hacerca del resultado de esta con ciertos valores, me devuelve algo que claramente no es el resultado que se esperaria, para una operacion de elevar un numero a una cantidad determinada. al realizar el siguiente calculo no da el resultado que se esperaria:


Power(10,4)= 3,6854775808e-2324...., donde claramente me deveria dar 10000, si Power realizara 10^4 = 10*10*10*10 = 10000

aig 05-10-2004 09:40:51

Hola,

hice una pequeña prueba con Power y con IntPower (Delphi 6) y sí que me dio los resultados esperados. No sé cual es la diferencia pero por si te sirve de algo ahí va:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
r: real;
begin
r:=(Power(StrToFloat(maskedit1.Text),StrToFloat(maskedit2.text)));
MaskEdit3.Text:=FloatToStr(r);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var
r: real;
begin
r:=(intPower(StrToInt(maskedit4.Text),StrToInt(maskedit5.text)));
MaskEdit6.Text:=FloatToStr(r);
end;


Tanto el valor que me aparecia en el MaskEdit como el que tenía la var r al hacer un breakp era el esperado para los ejemplos Power(10,4) o IntPower(10,4)

¿No estará el problema en los parametros que envias a la función?

De todos modos si te sigue dando problemas puedes crear tu propia función power repitiendo la multiplicación en un for.

Saludos.

senpiterno 06-10-2004 03:30:56

Tienes razon aig, al hacerlo como tu me indicas da el valor esperado, pero prueba el siguiente codigo y ve el resultado que obtienes en "I" al usar watch para ver el valor de la variable en tiempo de ejecución...

Código Delphi [-]
Procedure Potencia;
Var
   I:extended;
Begin
       
  I:=Power(10,4);
  
 End;

aig 06-10-2004 10:00:45

I: 10000

Si quieres te envio un Print Screen o la información que necesites.


La franja horaria es GMT +2. Ahora son las 11:43:41.

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