Frage von MeineFrage101, 115

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.

Expertenantwort
von Willibergi, Community-Experte für Mathe & Mathematik, 59

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:

  1. 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. 
  2. 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

Kommentar von Iamiam ,

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!

Kommentar von Willibergi ,

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

Kommentar von Suboptimierer ,

PI() liefert mehr Stellen, als es den Anschein hat.

=PI()               liefert 3,14159265358979000...
=REST(PI()*10^6;10) liefert  2,65358979301527000...
Kommentar von Willibergi ,

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

Kommentar von MeineFrage101 ,

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. 

Kommentar von Willibergi ,

Freut mich, dass ich dir helfen konnte. ^^

Gern geschehen! ;)

LG Willibergi

Expertenantwort
von hypergerd, Community-Experte für Mathematik, 13

"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) }

Expertenantwort
von hypergerd, Community-Experte für Mathematik, 8

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

Expertenantwort
von Iamiam, Community-Experte für Excel, 48

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

Kommentar von Iamiam ,

191 liefert 5 im obigen Link

Expertenantwort
von Suboptimierer, Community-Experte für Excel, Mathe, Mathematik, 45

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)
Kommentar von Suboptimierer ,

Was auch geht:

=TEIL(PI();11+2;1)

Keine passende Antwort gefunden?

Fragen Sie die Community