Frage von Benni517, 70

π auf hundert stellen berechnen c#?

Ich möchte das mein code pi auf 100 stellen ausrechnet. Ich habe schon den code aber dieser geht nur auf 14 stellen

double pi = Math.PI;

aber wie bekomme ich das hin das er mir pi auf 100 stellen rechnet?

Antwort
von Chippo78, 51

Du könntest dir ersteinmal deinen eigenen Pi-Berechnungs-Alg schreiben. Beispiele wie soetwas aussehen kann, gibt es zu hauf im Netz. Dann sorgst du dafür das jeweils die zu letzt berechnete Stelle in ein String geschrieben wird. Am besten schreibst du das in ein Stringbuilder-Obj dem du denn gewünschten Längenwert vorgibst.

https://msdn.microsoft.com/de-de/library/system.text.stringbuilder(v=vs.110).aspx

StringBuilder stringBuilder = new StringBuilder(x);

x ist die gewünschte Länge + Platz für "4.".

Der Grund ist, wenn du dann mit wirklich großen Werten arbeitest, würde das arbeiten direkt über string ziemlich auf die Geschwindigkeit gehen.

Kommentar von ceevee ,

Anstelle des Stringbuilders würde ich mir eine BigNumber-Library suchen, z.B.

https://bignumber.codeplex.com/

. Aber ansonsten ist die Antwort korrekt, so würde ich es auch machen. In der Math.PI-Konstanten sind nur 14 Stellen abgespeichert, deswegen muss der Fragesteller sich selbst überlegen, wie er Pi ausrechnet.

Kommentar von Jonas711 ,

x ist die gewünschte Länge + Platz für "4.".

"4."?

Kommentar von Chippo78 ,

@ Jonas
Habe mich vertippt, meinte natürlich 3. Tschuldigung. Also 3.141...

Antwort
von wolfgang1956, 3

Dadurch werden andere Rechnungen, die π verwenden definitiv nicht wesentlich genauer.

Beispiele dafür gibt es genug im Internet.

Wenn du dir eine Excel-Tabelle mit π erstellst, die die maximalen Stellen immer um eine Ziffer nach dem Komma reduziert, wirst du feststellen, dass π schon bei 7 Stellen nach dem Komma immer das gleiche Ergebnis „produziert“. => Viele Nachkommastellen erhöhen nicht die Genauigkeit, bzw. gaukeln eine Genauigkeit vor, die für die Praxis irrelevant ist.

  • Maurer arbeiten auf den cm genau
  • Schreiner und Tischler arbeiten auf etwa 2 mm genau
  • Schlosser arbeiten auf den mm genau
  • Feinmechaniker arbeiten auf einen hundertstel mm genau. Wie soll man da mit sinnvoll nutzbaren und bezahlbaren!! Messwerkzeugen „genauer“ messen!
Antwort
von hypergerd, 16

Wie man unter http://www.gerdlamprecht.de/Kreiszahl.htm

sieht, gibt es nicht 1, sondern hunderte Algorithmen für Pi.

Wenn man nur 100 Stellen braucht, kann man auch die Summe von §7a von k=0 bis 81 ausrechnen, das ergibt den Bruch

462533469414132740772898823355674778981053206812446539591351424689909455879710469823436916950817804855369657856742431975005753189453708076485794679520643478600815677439378021169539873984607214560712161804450160027431477779324050765298442375841036079481138389039088471044630547396286216727883363130800193
/ 147228976005406416456605889545234663708007132214287099502671761731579623900279550136942123575012097144279697449259580107591629642263084558372712139113827838066394827831985133188307694217350562300332574548559348072311957055907621362197137385735341359051650074008136782822625040058828668282141272965120000

also nur 1 Division -> einfach so programmieren, als wenn Du schriftlich dividieren würdest...

was 102 übereinstimmende Nachkommastellen mit Pi ergibt.

Unter §2f ist der c-Code (nur 138 Byte) für 15000 Stellen von Pi.

Mit dem langsamen c# (denn das ist kein richtiger Compiler) wird es jedoch länger dauern!

Bevor ich mehr antworte (denn mit gutem c Code kann man 1 Mrd. Stellen in unter 4 min berechnen), brauche ich Deine Ziele:

- muss es unbedingt das langsame c# sein?

- wenn schon mehr als die Standard-double-Genauigkeit, warum nur 100 Stellen 

- soll es eine exe werden, oder kann es auch eine html Seite sein?

Kommentar von hypergerd ,

Wie einfach und schnell das mit einer html Seite funktioniert (online und offline !) zeigt

http://numbers.computation.free.fr/Constants/TinyPrograms/OnlineConstants.html

1000 Stellen unter 1 Sekunde per hypergeometrischer Funktionen

(JavaScript nutzt auch nur double Datentyp ) 

Kommentar von TeeTier ,

Leider ist nur ein Bruchteil des Internets so gehaltvoll wie deine Website! Ich finde deine Themen dort immer sehr spannend, interessnt und vor allem inspirierend. Von der Sorte sollte es viel mehr geben.

Irgendwie bekommt man dabei immer richtig Lust auf irgendwelche "Spielereien". :)

Du hast übrigens geschrieben, dass du für 1 Mrd. Nachkommastellen mit einer C-Implementierung ca. 4 Minuten brauchst.

Ich brauche dabei nur etwas über eine Minute in der Shell:

#!/bin/bash

time -p wget http://stuff.mit.edu/afs/sipb/contrib/pi/pi-billion.txt

Aber ich denke, das zählt nicht. :)

Kommentar von hypergerd ,

Also ich habe 32 MBit/s und auch da dauert download über 4 min:

http://www.wolframalpha.com/input/?i=download+time+1gb+with+32mb%2Fs

(vermutlich hattest Du noch Daten im schnellen Cache-Speicher)

Richtig schnelle PCs schaffen das in 31 s zu berechnen:

http://www.numberworld.org/y-cruncher/benchmarks/charts/1b.html

Antwort
von LeCux, 42

Schaust du hier:

https://crypto.stanford.edu/pbc/notes/pi/code.html

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten