PDA

Ver la Versión Completa : Funcion matematica


senpiterno
05-10-2004, 02:07:20
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...


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.