Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Oxmyx 22. Mär 2005 22:49

Re: Die Zahl e, aber wie in Pascal?
 
[quote="IngoD7"]
Zitat:

Zitat von Binärbaum
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.

Das Problem ist trotzdem die begrenzte Genauigkeit von Standarddatentypen. Wenn du dir die bekannte Formel (1+(1/n))^n anschaust, siehst du, dass 1/n für große n sehr klein wird. Und irgendwann wird aus 1/n dann eben faktisch 0, weil die Fließkommadarstellung keine kleineren Zahlen erlaubt. Und dann ist (1+1/n)^n für "n = sehr sehr hoch" eben 1, und nicht e.

MagicAndre1981 22. Mär 2005 23:23

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

Nun will ich die Zahl e (2,7182...) nach einem Button.Click in einem Panel anzeigen lassen.
Zitat:

Zitat:

const My_E = 2.7182818284590452353602874713527
Genau so wollte ich es nicht haben. ouch!
warum wilst du eine Konstante nicht haben? Du willst doch einen Taschenrechner programmieren und kein Programm, dass die 2 Millionste Stelle von PI berechnet. :gruebel: Nimm doch die Konstante, dass ist am schnellsten.


André

chkdsk 22. Mär 2005 23:35

Re: Die Zahl e, aber wie in Pascal?
 
Auch wenn es wahrscheinlich nur noch begrenzt sinnvoll ist, hier die Eulersche Zahl auf 200 Nachkommastellen genau:

Zitat:

2,718281828459045235360287471352662497757247093699 9595749669676277240766303 53547594571382178525166427427466391932003059921817 41359662904357290033429526059563 073813232862794349076323382988075319525101901
Oder noch genauer: http://wikisource.org/wiki/E_to_10%2C000_places


Also wenn es nicht um mathematische Herleitung geht, sondern rein darum, die Zahl zu benutzen, dann sind Konstanten wohl immer vorzuziehen.

[edit=sakura] Mal ein paar Umbrüche zugelassen :roll: Mfg, sakura[/edit]

Binärbaum 23. Mär 2005 00:19

Re: Die Zahl e, aber wie in Pascal?
 
Es ist wohl kaum sinnvoll, e auf 200 oder mehr Stellen anzugeben, da die Floating-Point-Datentypen in Delphi nur auf ca. 10-15 Stellen genaue Werte speichern können (siehe OH zu den Datentypen Single, Real, Double, Extended).
Außerdem ging es dem Threadersteller auch um ein Näherungsverfahren und nicht darum, welches die 200. Stelle von e ist.

MfG
Binärbaum

alcaeus 23. Mär 2005 05:31

Re: Die Zahl e, aber wie in Pascal?
 
Manchmal wundere ich mich ueber die Fantasielosigkeit der Programmierer:

Delphi-Quellcode:
var
  e: Extended;
//...
e := Exp(1);
Die Delphi-Hilfe haette euch gesagt:
function Exp(X: Real): Real;

Description

In Delphi code, Exp returns the value of e raised to the power of X, where e is the base of the natural logarithms.


Wenn also Exp den Wert von e^x gibt, dann ratet mal was wohl e^1 ist :roll:

Greetz
alcaeus

Quake 23. Mär 2005 06:32

Re: Die Zahl e, aber wie in Pascal?
 
Wenn man n als Konstante angibt dann kann man auch gleich e als Konstante benutzen da die Formel eh immer den gleichen Wert errechnet.

MaBuSE 23. Mär 2005 07:20

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

Zitat von alcaeus
Manchmal wundere ich mich ueber die Fantasielosigkeit der Programmierer:
Delphi-Quellcode:
var
  e: Extended;
//...
e := Exp(1);

Hier wird aber auch eine Konstante benutzt.

Die FPU des Prozessors bietet eine Konstante FLDL2E.

FLDL2E entspricht log2(e)

Exp(1) macht also "nur" ein 2^log2(e) :-)
-> also 2 ^ FLDL2E-Konstante

(Anmerkung: ^ = hoch bzw Power() )

Ich perönlich bevorzuge da eine Konstante wie schon weiter oben beschrieben.

Das ist der ASM Code von Exp()
Delphi-Quellcode:
asm
        {       e**x = 2**(x*log2(e))  }

        FLDL2E             { y := x*log2e;     }
        FMUL
        FLD    ST(0)      { i := round(y);    }
        FRNDINT
        FSUB   ST(1), ST  { f := y - i;       }
        FXCH   ST(1)      { z := 2**f         }
        F2XM1
        FLD1
        FADD
        FSCALE             { result := z * 2**i }
        FSTP   ST(1)
end;

Chegga 23. Mär 2005 09:34

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

Zitat von MagicAndre1981
Zitat:

Nun will ich die Zahl e (2,7182...) nach einem Button.Click in einem Panel anzeigen lassen.
Zitat:

Zitat:

const My_E = 2.7182818284590452353602874713527
Genau so wollte ich es nicht haben. ouch!
warum willst du eine Konstante nicht haben?
Du willst doch einen Taschenrechner programmieren und kein Programm,
dass die 2 Millionste Stelle von PI berechnet. :gruebel:
Nimm doch die Konstante, dass ist am schnellsten.

Ich wollte einfach wissen, wie ich das in Pascal umsetze, da ich nicht
einfach nur eine Konstante nehmen wollte.
(Sonst hätte ich diesen Thread erst gar nicht eröffnen müssen. :wink: )

MfG Marc

P.S.: Danke noch mal für alle Antworten! :dp:

IngoD7 23. Mär 2005 12:07

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

Zitat von Oxmyx
Zitat:

Zitat von IngoD7
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.

Das Problem ist trotzdem die begrenzte Genauigkeit von Standarddatentypen. [...] Und dann ist (1+1/n)^n für "n = sehr sehr hoch" eben 1, und nicht e.

Dem stimme ich zu. Aber auch das hat nichts mit Overflow zu tun. Ein Overflow der Ergebnisvariable tritt schlicht nicht auf. Mehr wollte ich nicht ausgedrückt haben.

Quake 23. Mär 2005 12:32

Re: Die Zahl e, aber wie in Pascal?
 
@Chegga : Warum möchtest du keine Konstante verwenden? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr.
Seite 2 von 3     12 3      

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