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

h2o202

Frischling

  • »h2o202« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Rodgau

  • Private Nachricht senden

1

23.11.2006, 22:10

Sehr Sehr lange Zahlen in C++

Hallo

Ich habe mich mal spaßeshalber hingesetzt und ein Programm geschrieben welches mir die Zahl Pi sehr genau berechnen kann.
doch aufgrund der Beschränkung auf 18 Nachkommastellen einer double oder long Variable komme ich leider auf keine sehr genaue Genauigkeit.

Daher habe ich mir auch gedanken gemacht ob es nicht möglich sei eine Klasse zu schreiben, welche Methoden enthält mit der man Rechenoperationen mit Zahlen durchführen kann die aber nicht als Zahl sondern als String abgespeichert sind.

sprich statt eine double Variable(z.B.3,141593......)mit 18 Nachkommastellen verwendet mann ein 20 Felder (oder noch grösseres) Array welches die Zahl stelle für stelle als Char abspeichert.

nun müsste es ja möglich sein mit(kompliziertem Code) ein Programm zu Schreiben dass diese Strings nun Addiert, Subtrahiert und sonst welche Operationen Ausführt.

Es wäre echt perfekt wenn es eine klasse gäbe mit Methoden zum Erstellen von solchen StringZahlen, Methoden für sämmtliche Rechenoperationen denen man nur als Parameter die StringZahlen übergeben muss usw..

vorteil wäre dass dieses Programm bis auf Gott weiß wieviele Nachkommastellen genau Rechnen kann. Nachteil dass es sehr viele Rechenoperationen Braucht.

Ich wollte einfach mal fragen ob jemand weiß ob es sowas vieleicht schon gibt, oder ob jemand eine Bessere Lösung weiß?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

23.11.2006, 22:22

Da gibt es viele Libraries, z.B.:

http://www.swox.com/gmp/
http://www.shoup.net/ntl/index.html

übrigens per Google gefunden ...

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

3

23.11.2006, 22:57

mal so ne frage die grade zum thema passt:

Wie berechnet man denn Pi??

Kann man zum beispiel int mit beliebig vielen long's kombinieren??
Beispiel:

C-/C++-Quelltext

1
long long long long long int iNumber;


mfg,

Faule Socke

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

23.11.2006, 23:00

LOL diese Frage kann dir glaube ich auch der dein Kompilier beantworten ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

23.11.2006, 23:18

Die 1. Frage beantwortet dir z.B. Wikipedia.
Zur 2. Frage kann man eigentlich nix mehr sagen. :shock:

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

24.11.2006, 11:37

Zitat von »"Faule Socke"«

[...]Wie berechnet man denn Pi??[...]

Einheitskreis in N gleiche "Kuchenstücke" zerlegen.
Kuchenstücke durch jeweils zwei rechtwinklige Dreiecke approximieren.
Flächen der zwei Dreiecke eines Kuchenstücks berechnen und addieren.
Die so erhaltene (approximierte) Fläche eines Kuchenstücks mit N multiplizieren.
Das Ergebnis der Multiplikation ist PI.

Das funktioniert vor dem Hintergrund, dass die Fläche des Einheitskreises genau PI ist, weil E = PI*r², mit r = 1, also E = PI. (E: Fläche des Einheitskreises.)
Kommen Sie nie mit einem Schwert zu einer Schießerei.

Anonymous

unregistriert

7

24.11.2006, 11:51

Er meinte wohl eher die Berechnung von X Stellen hinter dem Komma.

Du kannst zb eine Textdatei erzeugen und die Stellen hinter dem Komma einzeln reinschreiben (also mit deinem Prog jeweils die nächste ausrechnen). Allerdings bricht das Tempo deines PC ein wenn die Datei grösser wird als der Speicher, deswegen sollte eine txt nur eine definierte Grösse haben. Dann gehts halt weiter mit der nächsten. So kannst du weitermachen bis dein System mangels Festplattenplatz zusammenbricht.

Wer nur bis zu einigen millionen (!) Stellen im RAM berechnen will und echt fette floats will kann mal hier rumschnüffeln.

http://www.jjj.de/hfloat/

cu

h2o202

Frischling

  • »h2o202« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Rodgau

  • Private Nachricht senden

8

24.11.2006, 12:31

wow hier bekommt man echt schnell antworten.

Danke für die vielen Links :)

Die benötigte Formel zum berechnen von Pi hab ich auch aus Wikipedia ;)

wenn ihr mich jetzt entschuldigt ich muss mir ein paar links anschauen :D

Werbeanzeige