Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

03.03.2004, 20:33

Eigenen Datentyp definieren

Hallo, der Titel sagt eigentlich schon alles.
Ich brauche einen Datentyp, der gross genug ist um wirklich grosse Zahlen zu behalten (so Fakultäten bis vielleicht 10 000). Das passt leider meines Wissens nach in keinen 64bit Datentyp mehr. Nun bekam ich von einem flüchtigem Bekannten den Tip, mir meinen eigenen Datentyp zu schreiben, nur weiss ich nichtmal wie ich das angehen sollte, bzw. wonach ich im I-Net suchen sollte.
Könnt ihr mir vielleicht ein paar Tips dazu geben?

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

03.03.2004, 21:25

Hi,

ich versuchs mal, bin zwar net mehr mega nüchtern aber egal ;D

Quellcode

1
2
3
typedef double DOUBLE; // 64 bit
typedef long double MYTYPE; // 80 Bit
typedef long long int64; // 64 bit

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

03.03.2004, 21:48

Für wirklich sehr große Zahlen solltest Du Dich nach einer Mathe-Bibliothek umsehen. Dort gibt es dann Klassen für "beliebig" große Zahlen. Diese Zahlen haben dann keine feste Größe im Speicher, sondern werden bei Bedarf erweitert. Leider fällt mir grade nicht der Name der Bibliothek ein, an die ich da denke... es gibt aber sicherlich mehrere.

Edit: Suche bei Google nach "C++ beliebig große Zahlen" ergab:
- http://www.swox.com/gmp/ (Bibliothek für beliebig große Zahlen)
- http://www.jjj.de/hfloat/ (extrem genaue Floats)

4

04.03.2004, 00:25

Einen eigenen Datentyp kann man sich auch mit Klassen erstellen. Die Vektorklassen sind bestimmt ein Begriff. Es ist ja nichts anderes als ein Datentyp für Vektoren (z.B. für einen 3 Dimensionalen). Für Klassen kann man sich viele Operatoren überladen. Eine komplette Liste dieser Operatoren findest du in der MSDN.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

MAG

Frischling

Beiträge: 37

Wohnort: Berlin / Brandenburg

Beruf: Angehender Student

  • Private Nachricht senden

5

06.03.2004, 09:58

Also du kannst dir ganz leicht einen eigenen Datentyp basteln.
Dazu schreibst du einfach eine Klasse die die von dir gewünschten Eigenschaften hat und schreibst dann später im Quellcode zB folgendes:

Quellcode

1
typedef CMeineKlasse BIGINT;


Damit hast du den neuen Datentyp BIGINT definiert, welcher nichts anderes ist als deine Klasse.
Wie du in die Klasse richtig große Zahlen bekommst, ist da wohl dir überlassen.
Ich würde ja gerne die Welt verändern, aber Gott gibt mir den Quelltext nicht!

6

06.03.2004, 20:10

Danke für eure Antworten! Also an eine eigene Klasse hatte ich auch schon gedacht, dann müsste ich halt die Zahlen irgendwie zusammensetzen. Da ich aber keine Lust habe meine Zeit dafür zu opfern, werde ich wohl probieren müssen mit den libs klarzukommen.

Leider checke ich das gmp lib rein gar nich, sonst würd ich das benutzen.

Mal sehen, momentan kann ich mit doubles factorials bis 170 ausrechnen. Das muss dann wohl ausreichen.

Werbeanzeige