Wie kann ich aus einem Skript Pi mit einer bestimmten Anzahl von Dezimalstellen generieren?

Antworten:

19

Angenommen, Sie haben das Dienstprogramm bc(Basic Calculator) auf Ihrem System, könnten Sie den folgenden Befehl und ein bisschen gute alte Mathematik verwenden, um π auf 10.000 Dezimalstellen zu berechnen:

echo "scale=10000; 4*a(1)" | bc -l

Dies wird wahrscheinlich eine Weile dauern, bis 10.000 Dezimalstellen erreicht sind.

Befehl auflösen ...

  • scale = 10000 - Dies gibt die Anzahl der Dezimalstellen an, die für das Ergebnis verwendet werden sollen
  • 4 * a (1) - Dies gibt den Arkustangens von 1 [gleich 45 °: 45 x (π / 180) oder ¼π] zurück und multipliziert dann mit 4, um π zu erhalten.
  • bc -l - leitet die vollständige Funktionszeichenfolge in das Dienstprogramm bc weiter . -l gibt an, dass die Standard-Mathematikbibliothek geladen werden soll, die für die Arkustangensfunktion a () benötigt wird .

Um dies in ein Skript zu packen, wie Sie es in Ihrer Frage angegeben haben, schreiben Sie mit Ihrem bevorzugten Editor Folgendes und speichern Sie es als generatepi.sh:

#!/bin/bash
echo "scale=$1; 4*a(1)" | bc -l

Verwenden chmod +x generatepi.shSie dann von einem Terminal aus den Ordner, in dem Sie die Datei gespeichert haben, wodurch die Skriptausführungsrechte erteilt werden. Die Syntax ist dann generatepi.sh [number of places]. Beachten Sie, dass dies eine sehr grundlegende Methode zur Behandlung von Parametern verwendet und die Eingabe nicht validiert. Stellen Sie daher sicher, dass Sie nur positive Ganzzahlen als Parameter übergeben.

Die meisten Linux-Systeme sollten es haben, bcaber in einigen Fällen müssen Sie es möglicherweise installieren (z. B. apt-get unter Ubuntu, Emerge unter Gentoo usw.). Es gibt auch einen Port von bc für Windows .

Gaff
quelle
Es gibt native Pi-Rechner für Windows - Overclocker verwenden sie für Stabilitätstests
Journeyman Geek
~ 3 Minuten auf meinem Computer, ziemlich nutzlos in einem Skript. +1 obwohl für die Verwendung bc.
cYrus
Ich denke, das "b" in "bc" steht eher für "Berkeley" als für "Bench".
user1364368
Vielen Dank. Aktualisiert auf 'Basisrechner' basierend auf en.wikipedia.org/wiki/Bc_(programming_language)
Gaff