Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   fakultät ausrechnen - Exception wenn Wert zu groß wird (https://www.delphipraxis.net/136166-fakultaet-ausrechnen-exception-wenn-wert-zu-gross-wird.html)

BUG 24. Jun 2009 22:48

Re: fakultät ausrechnen - Exception wenn Wert zu groß wird
 
Solange wir kein 64bit-Delphi haben hat selbst Int64 doch einen viel größeren positiven Wertebereich als Cardinal, oder :gruebel:

Code:
Int64       Cardinal
--------    --------
2^(64-1) >> 2^(32)

MfG,
Bug

Chemiker 24. Jun 2009 23:04

Re: fakultät ausrechnen - Exception wenn Wert zu groß wird
 
Hallo BUG,

das schon, aber es bringt in dem Fall nichts, weil alle Zahlen größer 20 nicht mehr in einem 32-Bit-Register dargestellt werden können. Und dem Fall ist meiner Meinung Cardinal der bessere Typ.

Bis bald Chemiker

mirage228 24. Jun 2009 23:28

Re: fakultät ausrechnen - Exception wenn Wert zu groß wird
 
Also das verstehe ich noch nicht so ganz. 20! kann mit Cardinal nicht dargestellt werden (Integer Overflow), mit Int64 jedoch schon. Falls Du die übrigen Variablen meinst.... als UpperLimit und die lokale Variable i. Ja, die als Int64 zu machen wäre sinnlos. Da ist ein vorzeichenloser Integer (Cardinal z.B.) besser geeignet.

Chemiker 25. Jun 2009 00:13

Re: fakultät ausrechnen - Exception wenn Wert zu groß wird
 
Hallo mirage228,

vergesst am besten was ich geschrieben habe, ich fürchte das lag etwas an dem erhöhten Bierkonsum gestern.

Bis bald Chemiker

Stevie 25. Jun 2009 06:48

Re: fakultät ausrechnen - Exception wenn Wert zu groß wird
 
Zitat:

Zitat von Luckie
Ja das stimmt. Es kann natürlich zu einem Stacküberlauf kommen bevor der Wertebereich überwschritten wird. :gruebel:

Imo stimmt da was anderes nicht - wegen einer Rekursionstiefe von etwas über 20 bei einer solch trivialen Funktion fliegt noch lange nicht der Stack auseinander.
Warum löst du eigentlich etwas rekursiv, was auch ganz einfach iterativ möglich ist?

sirius 25. Jun 2009 07:41

Re: fakultät ausrechnen - Exception wenn Wert zu groß wird
 
Zitat:

Zitat von Stevie
Imo stimmt da was anderes nicht - wegen einer Rekursionstiefe von etwas über 20 bei einer solch trivialen Funktion fliegt noch lange nicht der Stack auseinander.

Das liegt wohl daran, dass Luckie die Bereichsüberprüfung ausgeschaltelt hat. Dann gibt er eine schöne große Zahl ein. Hat x Rekursionsaufrufe, Result stimmt schon lange nicht mehr (wegen Überlauf) und dann kommt sein Fehler.

Luckie 25. Jun 2009 12:50

Re: fakultät ausrechnen - Exception wenn Wert zu groß wird
 
Jupp, die Bereichsprüfung ist abgeschaltet. Ich denke da nie dran, weil die standardmäßig nicht aktiviert ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr.
Seite 2 von 2     12   

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