// Potenzieren
geschieht eigentlich über die Funktionen
Power() bzw. IntPower()
// aus der Unit
Math. Wer aber keine Lust
hat, für eine einzige Potenzierung
// die Unit einzubinden oder vielleicht nur eine alte Delphiversion besitzt,
// kann über den natürlichen
Logarithmus in den meisten Fällen auch zu
// einem Ergebnis kommen.
// Getestet mit D4 unter WinME
function hoch(basis, exponent: extended): extended;
begin
result := exp(exponent * Ln(basis));
end;
// Beispielaufruf
procedure TForm1.Button3Click(Sender: TObject);
var
erg: extended;
begin
erg := hoch(2, 5); // zwei hoch fünf
showmessage(floattostr(erg)); // 32
// --- oder ---
erg := hoch(5 * 2 + 7, 1.7); // siebzehn hoch einskommasieben
showmessage(floattostr(erg)); // 123,527361840807
// --- usw. ---
end;
// Wenn man ohne Gleitkommazahlen und mit positivem Exponenten arbeitet,
// kann man auch folgenden Code nehmen:
function IHoch(basis: integer; exponent: word): int64;
var
x: integer;
begin
result := 1;
for x := 1 to exponent do
result := result * abs(basis);
if odd(exponent) and (basis < 0) then
result := -result;
end;
// Beispielaufruf
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(floattostr(IHoch(-10, 3))); // -1000
end;
// -------------------------------------------------------------
// In Umkehrung der obersten Funktion kann man natürlich auch die Wurzel ziehen.
function wurzel(exponent, basis: extended): extended;
begin
if exponent = 0 then
result := 1
else if basis = 0 then
result := 0
else
result := exp(Ln(basis) / exponent);
end;
// Beispielaufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
// dritte Wurzel aus 64
showmessage(floattostr(wurzel(3, 64))); // 4
// siebente Wurzel aus 100
Edit1.text := floattostr(wurzel(7, 100)); // 1,93069772888325
end;
|