Wie kann ich mir in Excel eine beliebige Nachkommastelle von Pi anzeigen lassen?
Hallo,
Ich würde mir gerne in Excel von der Zahl Pi eine bestimmte Nachkommastelle anzeigen lassen. Die Zahl an sich lässt sich ja mit genügend Nachkommastellen in Excel einfügen.
z.B. Ich möchte in Excel die 191 Nachkommastelle der Zahl pi anzeigen lassen...
Es wäre super, wenn mir jemand weiterhelfen könnte.
5 Antworten
"beliebige" -> NEIN, da der Weltrekord für "Dezimalstellenposition" bei 13299999999998 liegt. (717)
http://www.lamprechts.de/gerd/php/pi-Nachkommastellen-suche.php
EXCEL hat mit VBA eine langsame Interpretersprache integriert -> damit gilt wie für alle Sprachen -> es gibt 3 grobe Wege:
a) intern speichern -> mit EXCEL sollten je nach Version mindestens 32000 im String ablegbar und per Mid Funktion einzelne Stellen herauspickbar sein
(neue EXCEL Versionen sollen bis 2 Mrd. Buchstaben pro String können)
b) externe Quellen wie Datei, Datenbank (wie der LINK oben) oder Internet
c) selbst berechnen: für das langsame VBA bis zu 4000 Stellen denkbar (danach wird es sehr langsam!)
Noch was zum BBP-Algorithmus:
- zur Zeit nur für hexadezimale Stellen bekannt! (die kann man nicht einfach nach dezimal wandeln, da man dazu die vorderen benötigt)
- auch hier steigt die Rechenzeit an: Hex-Position 1999999 benötigt bei
http://www.gerdlamprecht.de/Roemisch_JAVA.htm
unter Punkt "2. Textkonverter" selbst mit schnellem i7 etwa 5 Sekunden
Deshalb Vorschlag für Dich: Variante a)
VBA-Funktionen können dann auch in der Zelle aufgerufen werden, ohne dass Anwender den Code (kann per Passwort verschlüsselt werden) sehen können.
z.B. GetPiDezi(Position, AnzahlStellen)
=GetPiDezi(1,1) gibt dann 1 zurück {wenn man ohne Dezimaltrennzeichen im String arbeitet -> ansonsten =GetPiDezi(2,1) }
Zu beachten ist, dass die Formel =PI() nur 15 Nachkommastellen von π zurückliefert.
Um nun eine beliebige Nachkommastelle von π anzeigen lassen zu können, bieten sich folgende Möglichkeiten:
- Einfügen einer bestimmten Anzahl von Nachkommastellen von π in eine Zelle: Hier hast du das Problem, dass du keine beliebige Nachkommastelle von π, sondern sie dir nur bis zu einer Grenze ausgeben lassen kannst.
- Implementieren eines Algorithmus zur Berechnung von π: Hier könntest du dir zwar jede beliebige Nachkommastelle von π anzeigen lassen, jedoch ist eine Berechnung auf beispielsweise die 191. Nachkommastelle extrem rechen- und zeitaufwendig. Dies ist nur zu empfehlen, wenn es wirklich wichtig ist, jede mögliche Nachkommastelle von π zur Verfügung zu haben. Eine unendliche Summe, die schnell konvergiert, wäre hierbei empfehlenswert. Ramanujans Formel zu Berechnung von π ist eine gute Wahl.
Das waren nun zumindest die Möglichkeiten, die ich zur Lösung deines Problems sehe.
Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.
LG Willibergi
Implementieren eines Algorithmus zur Berechnung von π:
könnte man da wirklich EINZELNE STELLEN ausgeben? Denn sonst hat man ja wieder das Problem, dass xl nur auf 15 stellen genau rechnet und ausliest!
Stimmt, dafür müsste eine Ausweichlösung gefunden werden, die auf genügend Stellen genau rechnet.
Ich habe allerdings gerade etwas rumgegooglet und bin auf die Bailey-Borwein-Plouffe-Formel gestoßen.
Mit dem BBP-Algorithmus ist man in der Lage, eine beliebige Nachkommastelle von Pi zu bestimmen.
Das ist imho genau das, was der FS sucht!
Näheres dazu hier:
https://de.wikipedia.org/wiki/Bailey-Borwein-Plouffe-Formel#BBP-Algorithmus
LG Willibergi
PI() liefert mehr Stellen, als es den Anschein hat.
=PI() liefert 3,14159265358979000...
=REST(PI()*10^6;10) liefert 2,65358979301527000...
Stellen bringen nichts, wenn sie falsch sind. ^^
Pi ist nämlich 3,1415926535897932384626...
Dementsprechend ist der Teil nach der 3 aufgrund von Rundungsfehlern nicht mehr korrekt.
LG Willibergi
Da keine Rückmeldung kam, hier der Code:
Mit Alt + F11 Makro-Editor öffnen und einfügen:
Global strPi As String
Sub auto_open()
Open "10Mio.txt" For Input As #1
Line Input #1, strPi
Close #1
End Sub
Function GetPiDezi(ByVal pos As Long, ByVal llen As Long) As String
GetPiDezi = Mid(strPi, pos + 1, llen)
End Function
Es wird also automatisch beim Laden der XLS die 10Mio.txt eingelesen
(gleicher Pfad wie XLS; wenn Du sie brauchst, melde Dich)
in Zelle B1 kommt Anzahl der Stellen
Zelle B2 gesuchte Position
Ergebnis landet sofort in Zelle B3, da dort die Funktion aufgerufen wird mit:
=GetPiDezi(B2;B1)
Siehe Bild

Naja, "viele Stellen" ist relativ. PI() liefert mir 3,14159265358979. Dann ist Schluss. Oder meinst du eine manuelle Erfassung? Naja, spielt im Grunde keine Rolle.
Maskier die Stelle heraus.
Zum Beispiel die 11. Stelle:
=REST(GANZZAHL(PI()*10^11);10)
xl rechnet nur auf 15 Zählstellen genau. Bis zur 15. (14.Nachkomma-)Stelle
=Teil(Pi();16;1)
(das Komma ist auch ein Zeichen, aber keine Stelle)
Für höhere musst Du ins inet gehen, zB :
http://www.lamprechts.de/gerd/php/pi-Nachkommastellen-suche.php
zB ab Position ab 1:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862
Vielen Danke für eure schnelle Hilfe. Die
Bailey-Borwein-Plouffe-Formel
ist genau das was ich brauche.
Danke auch an alle anderen die sich damit beschäftigt haben und versucht haben mir zu helfen.