Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Größte Integer-Variable? (https://www.delphipraxis.net/22676-groesste-integer-variable.html)

Nicolai1234 21. Mai 2004 10:57


Größte Integer-Variable?
 
Ich weiß, dass das lächerlich klingt, aber welches ist die Variable, die die größt Zahl aufnehmen kann?
Ist das Int64? und wenn ja, wie groß, können damit die Zahlen werden?
Ich hoffe ihr versteht, was ich meine!
Danke im Voraus

dizzy 21. Mai 2004 10:58

Re: Größte Integer-Variable?
 
"Integer" in D eingeben -> F1
;)

MaOfDe 21. Mai 2004 11:17

Re: Größte Integer-Variable?
 
Du könntest dir natürlich auch die Mühe machen und dir eigene Integer-Typen schreiben, einschließlich der Prozeduren für Rechenoperationen :mrgreen: ... also sowas wie:
Delphi-Quellcode:
type
  MyInteger = array[0..7]of Cardinal;//mit 256 bits, also 2^256 mögliche Werte
*Hei wird das ein Spass :mrgreen: *

Nicolai1234 21. Mai 2004 11:22

Re: Größte Integer-Variable?
 
Wenn ich eine Wahrscheinlichkeit ausrechnen möchte, brauche ich in meinem Fall diese Formel.
0<n<366
Also steht im Nenner schlimmsten Falls 365^365!
Und im Zähler steht immer 365*364*363*362...

Da bräuchte ich deutlich größere Variablen!
Oder bringt es mir was, dass das Ergebniss immer zwischen 0 und 1 liegt?

Matze 21. Mai 2004 11:23

Re: Größte Integer-Variable?
 
Vielleicht hilft dir ein int64.

Nicolai1234 21. Mai 2004 11:25

Re: Größte Integer-Variable?
 
Das geht aber auch nur von -2^63 bis 2^63!

MaOfDe 21. Mai 2004 11:32

Re: Größte Integer-Variable?
 
Wie groß wäre denn der Exponent zur Basis 2, um dasselbe Ergebnis zu erhalten wie 365^365????
Hab grad keinen richtigen Taschenrechner zur Hand ^^.

gmarts 21. Mai 2004 11:37

Re: Größte Integer-Variable?
 
Wenn es keinen Typ mit diesem Umfang gibt, dann mach es doch "per Hand", Im prinzip so, wie man auf dem Papier rechnet; mit Überträgen etc. Dazu benutzt du am besten Strings.

Macht die ganze Sache etwas komplizierter, dafür kannst du aber auch viel größere Zahlen als 365 in deiner Rechnung benutzen.

Nicolai1234 21. Mai 2004 11:45

Re: Größte Integer-Variable?
 
Ich glaube, das ist ungefähr 2^3106!
Kann auch falsch sein! Ich bin darauf gekommen, weil 2^8,51172 zeimlich genau 365 ist und dann müsste man doch eigentlich, den Exponent mit 365 multiplizieren (8,51172*365=3106,7778)!

MaOfDe 21. Mai 2004 11:50

Re: Größte Integer-Variable?
 
OK, wenn ich richtig gerechnet habe sind muss der Exponent zur Basis 2 mindestens 3108 sein, um ein Ergebnis größer als 365^365 zu erzielen.
Das wäre dann sowat in der Art:
Delphi-Quellcode:
type
  MyInteger = array[0..97]of Cardinal

Nicolai1234 21. Mai 2004 11:51

Re: Größte Integer-Variable?
 
Und wie kann ich jetzt mit dem rechnen?

Mirilin 21. Mai 2004 11:53

Re: Größte Integer-Variable?
 
:hi:

zum dem Thema gibts hier schon einiges, einfach mal suchen.

mfg Tobias

sakura 21. Mai 2004 11:54

Re: Größte Integer-Variable?
 
Zitat:

Zitat von Nicolai1605
Und wie kann ich jetzt mit dem rechnen?

Nein, aber suche mal nach Bei Google suchenhugh integer delphi. Es gibt einige freie Bibliotheken für solch große Zahlen.

...:cat:...

MaOfDe 21. Mai 2004 11:54

Re: Größte Integer-Variable?
 
Eine berechtigte Frage....

Vielleicht Bit für Bit, wie es sich gehört:

1001 x 1100
1100000
+ 1100
1101100

Nicolai1234 21. Mai 2004 11:58

Re: Größte Integer-Variable?
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Nicolai1605
Und wie kann ich jetzt mit dem rechnen?

Nein, aber suche mal nach Bei Google suchenhugh integer delphi. Es gibt einige freie Bibliotheken für solch große Zahlen.

...:cat:...

Aus den Ergebnissen, werde ich auch nicht schlau! Wie soll ich das verstehen oder wonach, soll ich genau suchen?

sakura 21. Mai 2004 12:08

Re: Größte Integer-Variable?
 
Zitat:

Zitat von Nicolai1605
Aus den Ergebnissen, werde ich auch nicht schlau! Wie soll ich das verstehen oder wonach, soll ich genau suchen?

Sorry, Bei Google suchenHuge Integer - mal wieder geirrt ;)

...:cat:...

Nicolai1234 21. Mai 2004 14:30

Re: Größte Integer-Variable?
 
Irgendwie, werde ich aus den Sachen nicht schlau!
GIbt es vielleicht schon fertige functionen, die mit Zahlen "Schritt für Schritt" rechnen können, die in einem string liegen! Wenn nicht, würde es mal höchste Zeit werden, dass man mal eine derartige function schreibt!;

Mirilin 21. Mai 2004 14:32

Re: Größte Integer-Variable?
 
:hi:

Ja das gibts - wurde ja schon gesagt. Einfach mal bei Google googlen.
Links dazu wurden hier schonmal gepostet, finde aber nicht mehr wo.

mfg Tobias

gmarts 21. Mai 2004 17:29

Re: Größte Integer-Variable?
 
Zitat:

Zitat von Nicolai1605
Irgendwie, werde ich aus den Sachen nicht schlau!
GIbt es vielleicht schon fertige functionen, die mit Zahlen "Schritt für Schritt" rechnen können, die in einem string liegen! Wenn nicht, würde es mal höchste Zeit werden, dass man mal eine derartige function schreibt!;

Wenn du nen bisschen Geduld hast... werde mich nach dem schönen Wochenende mal dransetzen.

glkgereon 22. Mai 2004 11:38

Re: Größte Integer-Variable?
 
kannst du dann den qt ma open source mache`n?

mir gehts nämlcih ähnlich wie nicolai, habn ähnliches problem, und ich hab keinen dunst von eigenen integer-typen

Nicolai1234 22. Mai 2004 12:48

Re: Größte Integer-Variable?
 
Ich werde mich auch mal selber daransetzen und functionen programmieren, die mit strings rechnen können!
Wenn sie das Schritt für Schritt machen könnte man Zahlen bis 2GB länge nehmen, ich möchte nicht daran denken, wie viele Zeichen diese haben!

gmarts 22. Mai 2004 13:01

Re: Größte Integer-Variable?
 
Na bei 2GB Strings kannst du Zahlen mit 2 Mrd. Stellen nehmen. Ob das Sinn macht, ist eine andere Frage. :)

negaH 22. Mai 2004 14:55

Re: Größte Integer-Variable?
 
@Nicolai1605, welche Genauigkeit benötigst du denn ??

Willst du nur eine angenäherte Rechnung aufmachen dann wird der Datentyp Extended völlig ausreichen. Du musst dann nur deine Formel anders aufbauen und mit Logarithmen rechnen.

Oder willst du absolut exakt deine Formel ausrechnen, dann benötigst du auf alle Fälle eine Mathematische Bibliothek die mit solchen großen Zahlen exakt rechnen kann. In diesem Moment falle mir für Delphi 3 verschiedene Bibliotheken ein:

1.) NX von Marcel Martin zu finden auf http://www.ellipsa.net/index.html. Die Lib ist Freeware und Marcel ist ein absolut fundierter Mathematiker. Allerdings Marcel streikt zur Zeit gegen das neue EU Patentrecht.

2.) StreamSec von Hendrik Hellström ist ein kommerzielles Kryptoprodukt zu finden auf http://www.streamsec.com/. StreamSec beschränkt sich natürlich nur auf die Kryptographie mit Zahlen bis zu 2^4096 und ist für supergroße Zahlen schlecht geeignet. Zudem kostet es etwas und ist meiner Meinung nach längst nicht so fundiert wie NX.

3.) IIntegers ist eine Entwicklung von mir, die leider nicht frei in Source verfügbar ist. Hier im Forum findest du aber eine binäre Distribution auf die du zu Hobbyzwecken durchaus aufsetzen kannst. Von enormen Vorteil dürfte dabei der Fakt sein das in dieser Lib die Unit NCombi.pas enthalten ist. Nun, in dieser Unit findest du die schnellsten bekannten Algortihmen um enorm große Fakultäten, Kombinatorische Berechnungen usw. durchzuführen. Mit diesen Basisfunktion dürfte es ein leichtes sein deine Formel bis aufs Bit genau auszurechnen. Performancetechnisch enthält meine Lib eben auch hochspezialisierte Algortihmen um mit sehr sehr großen Zahlen mit bis zu 2^2^24 Binären Stellen zu rechnen. Beide Libs, StreamSec und NX, enthalten dagegen eben keine solche Verfahren und sind in solch großen Zahlenbereichen erheblich ineffizienter.
Bei der Eigenentwicklung solcher Bibliotheken musst du bedenken das sie einen enormen Zeitaufwand und Wissenstand benötigen. Ich selber entwickelte ca. 3 Jahre an meiner lib und habe in diesem Zeitraum über 4Gb an Dokumenten angesammelt.

Gruß Hagen

ibp 22. Mai 2004 14:57

Re: Größte Integer-Variable?
 
Hallo, irgendetwas stimmt an deiner Formel nicht, du meinst doch sicherlich:
p(an)=1-(365!-(365-n)!)/365^n oder ?
gruß rené

ibp 22. Mai 2004 15:12

Re: Größte Integer-Variable?
 
Zitat:

Zitat von ibp
Hallo, irgendetwas stimmt an deiner Formel nicht, du meinst doch sicherlich:
p(an)=1-(365!-(365-n)!)/365^n oder ?
gruß rené

wenn das so ist, dann schau dir doch mal den vorgang der formel genau an und mach eine Faktorenzerlegeung, dann kannst du dir sicherlich die stellen sparen in hinblick auf eine hinreichende genauigkeit !

ich beziehe mich mal nur auf den hinteren Teil:

für n=3 folgt dann

Delphi-Quellcode:
365!-(365-3)!
------------- =  
   365^3 

365*364*363    365   364   363
------------- = ----*-----*-----= 1*...*...
365*365*365    365   365   365

und das könntest du dann schritt für schritt berechnen!

gruß!

Nicolai1234 22. Mai 2004 16:46

Re: Größte Integer-Variable?
 
Was ist an der Formle anders als an meiner?

ibp 22. Mai 2004 17:28

Re: Größte Integer-Variable?
 
die kann man missverstehen, jedenfalls ich. :stupid:
...
du kannst die berechnung aber auch so durchführen:

(M=pi entspricht produktzeichen)



M(k=0..n)=(1-k/365)^k


n=2 => M=((1-0/365)^0)*((1-1/365)^1)*((1-2/365)^2)


gruß rene

ibp 25. Mai 2004 09:22

Re: Größte Integer-Variable?
 
hallo Nicolai1605

wie hast du es denn jetzt realisiert?

gruß rené

gmarts 25. Mai 2004 18:53

Re: Größte Integer-Variable?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, wie versprochen 4 praktische Funktionen und 2 halbpraktische Funktionen zum Thema Rechnen mit großen Zahlen.
Damit lassen sich Zahlen bis zu (10^2147483648)-1 darstellen und berechnen (Theoretisch, wenn man gaaanz viel Zeit mitbringt :mrgreen: ).

Quellcode ist noch nicht dabei, da ich mich vor den 3 Strafen des Programmierens drücke: Optimieren, Strukturieren, Kommentieren. :drunken:

Bis denne

Erweiterung auf Reelle und Ganze Zahlen und Abfangen von Fehleingaben kommt in der nächsten Version.

Nicolai1234 25. Mai 2004 18:57

Re: Größte Integer-Variable?
 
Trotzdem wäre der QT nicht schlecht... (auch unkommentiert)

yankee 25. Mai 2004 19:05

Re: Größte Integer-Variable?
 
Also Int64 schafft bis 9x10^18
Extended schafft bis zu 1.1x10^4932

Nicolai1234 25. Mai 2004 19:06

Re: Größte Integer-Variable?
 
Ich brauch aber 365^365 bzw. 2^3106

yankee 25. Mai 2004 19:14

Re: Größte Integer-Variable?
 
da sagt mein Taschenrechner:
Error: Overflow. Der kann nur bis 10^99 *g*

gmarts 25. Mai 2004 19:14

Re: Größte Integer-Variable?
 
ich schaffe (1x10^2147483648)-1 ! Also etwas :-D mehr als Extended!

gmarts 25. Mai 2004 19:25

Re: Größte Integer-Variable?
 
365^365=172542277632122737559895849663573864796679 83437847939938563481785851424023385637051897539230
75035974875158775542724004233909047244752131293832 56571734521752761522455219286852015259932541676633
41514519892888904917146005801395963582625898509608 98645756592395725554379776567871434784382986995752
80824310927416454850159603351152612899693013477557 14803571488871121346614749855590486883795660824966
47493756678799211489350885733213726182153186218494 20733459386638493237148318471142878922179172279841
83930593514152586871192242700598783287017487487765 55330544492620123172981297111394462336647971055556
89165137283519246240241333680255598722713995635104 59708557216405820031273973241186180378370923425940 4
09056636287146680400467219336091320128145755998343 54950278239604949911499526940394708909106151962021 6
74790296426613120255836465655776825359869391700568 00966958628105171291336507223938563485237929534987 9
62043590670191406388767063617706298828125

Eine sehr sinnvolle Zahl.

Nicolai1234 25. Mai 2004 19:27

Re: Größte Integer-Variable?
 
Danke aber in meiner Rechnung (s.o.) brauche ich 365^n (0<n<366) also wären die Exponenten nicht schlecht!

gmarts 25. Mai 2004 19:32

Re: Größte Integer-Variable?
 
Delphi-Quellcode:
var i:integer;

uses kubmstrings;

procedure bla;
var i:integer;
  basis,exponent:string;
begin
 s:='1';
 basis:='365';
 exponent:='365'
 for i:=1 to exponent do
  begin
   s:=multstr(s,basis);
  end;
 result:=s;
end;
So schwer ist das doch nicht! :wall:

Nicolai1234 25. Mai 2004 19:35

Re: Größte Integer-Variable?
 
War mir schon klar, aber ich meine nur das dein Ergebis von oben mir nichts brachte!
O
bwohl hier ein Fehler drin ist!
Zitat:

Zitat von gmarts
Delphi-Quellcode:
var i:integer;

uses kubmstrings;

procedure bla;
var i:integer;
  basis,exponent:string;
begin
 s:='1';
 basis:='365';
 exponent:='365'
 for i:=1 to exponent do
  begin
   s:=multstr(s,basis);
  end;
 result:=s;
end;

exponent ist ein string und dann kannst du ihn nicht so einfach i zuweisen! *g*

gmarts 25. Mai 2004 19:39

Re: Größte Integer-Variable?
 
:stupid: *lacht* Stimmt, das kommt davon, wenn man auf numerische Variablen verzichten möchte und sich die ganze Zeit mit Strings rumgeschlagen hat! :-D



Mehr Rechte für STRINGS als Zählvariablen in Schleifen!

yankee 25. Mai 2004 19:52

Re: Größte Integer-Variable?
 
Kannst du nicht eingfach mit unausgerechneten Potenzen rechnen? Also mit irgendwelchen Potenzgesetzen? Das sollte doch kein Problem sein.
Ich kenne da aber jemanden, den ich mal fragen kann, wie man sowas in der Richtung realisieren könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.
Seite 1 von 2  1 2      

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