Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Die Zahl e, aber wie in Pascal? [Erledigt!!] (https://www.delphipraxis.net/42704-die-zahl-e-aber-wie-pascal-%5Berledigt-%5D.html)

Chegga 22. Mär 2005 21:03


Die Zahl e, aber wie in Pascal? [Erledigt!!]
 
Hi,

ich programmiere gerade einen Taschenrechner.
Nun will ich die Zahl e (2,7182...) nach einem Button.Click in einem Panel anzeigen lassen.

Die mathematische Formel für e ist:
e = ( 1 + 1/n)^n

Um so größer n ist, desto genauer wird e.
Wie setze ich das jetzt in Pascal um?

Delphi-Quellcode:
procedure TForm1.Button23Click(Sender: TObject);
var e: Real;
begin
  e := (1 + 1/1000)^1000;          // hier ist n z.B. 1000
  // weiterer Code...
end;
Dass das so nicht geht, ist mir völlig klar. :wink:
Vielleicht so irgendwie:
Delphi-Quellcode:
procedure TForm1.Button23Click(Sender: TObject);
var e: Real;
    Temp: String;
begin
  e := (1+1/1000);
  Str(sqr():3:1, Temp);
  // weiterer Code...
end;
Wie kann ich das sonst machen? :gruebel:

MfG Marc

sniper_w 22. Mär 2005 21:05

Re: Die Zahl e, aber wie in Pascal?
 
Delphi-Quellcode:
const My_E = 2.7182818284590452353602874713527
:???:

Dax 22. Mär 2005 21:06

Re: Die Zahl e, aber wie in Pascal?
 
Delphi-Quellcode:
e := Power(1 + 1 / 1000, 1000);

Binärbaum 22. Mär 2005 21:14

Re: Die Zahl e, aber wie in Pascal?
 
Also so ginge es:
Delphi-Quellcode:
function GetEuler(n: Cardinal): Extended;
begin
  Result:= IntPower(1+1/n, n);//= (1+1/n)^n
end;
Allerdings kann es dabei ggf. zu einem Overflow kommen. Deshalb gibt es noch eine andere (allerdings langsamere) Methode:
Delphi-Quellcode:
function GetEuler(n: Cardinal): Extended;
  function Fakultaet(x: Cardinal): Int64;
  var c: Cardinal;
  begin
    Result:=2;
    for c:= 3 to x do
      Result:= Result*c;
  end;
var i: Integer;
begin
  Resuult:= 2;
  for i:= 2 to n do
    Result:= Result + 1/Fakultaet(i);
end;
Je höher dort n angegeben wird, umso genauer ist das Ergebnis.

MfG
Binärbaum

Alexander 22. Mär 2005 21:15

Re: Die Zahl e, aber wie in Pascal?
 
Würde dir auch raten, e als Konstante zu hinterlegen, da es dir vermutlich nciht um Näherungsverfahren selber geht.

Erstmal kann es Problemem mit zu hohen Potenzen geben und zweites kannst du dir so ein wenig Rechenpower sparen :)

Chegga 22. Mär 2005 21:23

Re: Die Zahl e, aber wie in Pascal?
 
Hi,

thanks @ all!

Ich habe Binärbaums Lösung übernommen. :thumb: (Klappt wunderbar!)

Zitat:

Zitat von sniper_w
Code:
const My_E = 2.7182818284590452353602874713527
:???:

Ein :mrgreen: reicht wohl. :mrgreen:
Genau so wollte ich es nicht haben. :wall:
(Trotzdem thx)

MfG Marc

TeronG 22. Mär 2005 21:27

Re: Die Zahl e, aber wie in Pascal?
 
Ich kenn ja deine Anwendung nicht aber eine const währ doch viel fixer :gruebel: kannst ja im Vorfeld deinen Rechner mal über nacht laufen lassen, um dein e genau genug zu bekommen :mrgreen: (kannst ja dann wieder die zu genauen Kommastellen (niedriges n) wegkürzen :duck: )

IngoD7 22. Mär 2005 21:29

Re: Die Zahl e, aber wie in Pascal?
 
Zitat:

Zitat von Binärbaum
Allerdings kann es dabei ggf. zu einem Overflow kommen.

Wie das denn? :gruebel:

Bei n=1 ist das Ergebnis 2.
Bei n=unendlich ist das Ergebnis e (also 2,71828..).

Ich denke doch, dass bestimmte Delphi-Zahlentypen einen Wert zwischen 2 und 2,718.. aufnehmen können. :twisted: :wink:

Binärbaum 22. Mär 2005 21:31

Re: Die Zahl e, aber wie in Pascal?
 
Wenn es einfach nur um eine simple Rechnung geht, dann ist die Varainte, e als Konstante zu deklarieren und damit zu rechnen, am einfachsten (weil schnellste). Aber bei Näherungsverfahren für e kommt man um längere Berechnungen nun mal nicht herum.

MfG
Binärbaum

@IngoD7
Es ist mir schon klar, dass bei n=1 kein genauer Wert für e errechnet wird. Ich habe ja auch extra dazugeschrieben, dass die Werte nur genau sind, wenn n ziemlich groß ist. Und n=1 ist halt keine große Zahl. :roll:

IngoD7 22. Mär 2005 21:41

Re: Die Zahl e, aber wie in Pascal?
 
Zitat:

Zitat von Binärbaum
@IngoD7
Es ist mir schon klar, dass bei n=1 kein genauer Wert für e errechnet wird. Ich habe ja auch extra dazugeschrieben, dass die Werte nur genau sind, wenn n ziemlich groß ist. Und n=1 ist halt keine große Zahl. :roll:

Und was hat das mit meinem Posting zu tun?
Achte bitte drauf, was gemeint war. Ich hatte deine Aussage mit dem Overflow zitiert und wollte darlegen, dass es dazu nicht kommen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz