Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
26. Okt 2009
Lieber gammatester, lieber alzaimar,
ich habe vergessen zu erwähnen, daß ich nur mit ganzen Zahlen >=1 getestet habe.
Das werde ich noch reparieren.
Des öfteren möchte man testen, ob eine ganze Zahl eine Potenz von n (>=1) ist, zb. 1,3,9,27,81,243
Zu Deinem Einwand mit 2^7 komme ich zu folgenden Ergebnissen, die von Deinen abweichen.
Hier mein Testcode für 2^1 .. 2^128
Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
24. Okt 2009
Damit kann ich gut leben, bin ja noch lernfähig :-D
Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
23. Okt 2009
Willkommen in der freundlichen Community rund um Embarcaderos/CodeGears Entwicklertool "Delphi"
In diesem Sinn
sei gegrüßt
Wolfgang
Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
23. Okt 2009
function IsPowerOfX(base, number: double): boolean;
begin
result := IsZero(abs(frac(logn(base, number)));
end;
Aja, und Du bist sicher, daß das mit der Null (IsZero) wirklich funktioniert?
Halte ich für ein Gerücht!
Das abs ist überflüssig, da Nachkommastellen immer positiv sind.
Und was soll nun wirklich besser sein?
Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
23. Okt 2009
Zeigt doch 'mal bitte Eure Profi-Version,
dürfte auch andere interessieren.
MFG
Wolfgang
Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
23. Okt 2009
Richtig, unter 1 wird der Logarithmus negativ bis - unendlich,
bei Null crashed es
Gruß
Wolfgang
Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
23. Okt 2009
Nein, Log(1) ist immer exakt Null, zu jeder Basis.
Gruß
Wolfgang
Forum: Programmieren allgemein
Delphi
by Wolfgang Mix,
23. Okt 2009
Des öfteren möchte man testen, ob eine ganze Zahl (>=1) eine ganze Potenz von n (>=1) ist,
zb. 1,3,9,27,81,243 für n=3 usw. Die beiden nachfolgenden Funktionen erledigen das.
Anmerkung: Bei sehr großen Zahlen werden fehlerhafte Werte zurückgegeben.
//Wolfgang Mix - Delphi - PRAXiS
function LgX(base, number: Double): Double; //inline;
begin
if (base <= 0.0) or (number <= 0.0) then