Come posso generare Pi per un determinato numero di cifre decimali da uno script?


Risposte:


19

Supponendo che tu abbia l' utility bc(Basic Calculator) sul tuo sistema, potresti usare il seguente comando e un po 'di buona vecchia matematica per calcolare π con 10.000 decimali:

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

Questo richiederà probabilmente un po 'di tempo per completare 10.000 cifre decimali.

Abbattere il comando ...

  • scale = 10000 : specifica il numero di posizioni decimali da utilizzare per il risultato
  • 4 * a (1) - questo restituisce l'arcotangente di 1 [che equivale a 45 °: 45 x (π / 180), o ¼π] quindi si moltiplica per 4 per ottenere π.
  • bc -l - reindirizza la stringa di funzione completa nell'utilità bc , -l specifica di caricare la libreria matematica standard necessaria per la funzione arctangent, a () .

Per racchiuderlo in uno script come specificato nella domanda, utilizzare l'editor preferito per scrivere quanto segue e salvarlo come generatepi.sh:

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

Quindi da un terminale utilizzare chmod +x generatepi.shdalla cartella in cui è stato salvato il file, che darà i diritti di esecuzione dello script. La sintassi è quindi generatepi.sh [number of places]. Nota che utilizza un modo molto semplice di gestire i parametri e non convalida l'input, quindi assicurati di passarlo solo come numeri interi positivi.

La maggior parte dei sistemi Linux dovrebbe avere, bcma in alcuni casi potrebbe essere necessario installarlo (ad esempio apt-get su Ubuntu, emerge su Gentoo ecc.). C'è anche una porta di bc per Windows .


ci sono calcolatori pi nativi per Windows - gli overclocker li usano per i test di stabilità
Journeyman Geek

~ 3min sulla mia macchina, abbastanza inutile in una sceneggiatura. +1 però per l'utilizzo bc.
cYrus,

Penso che la "b" in "bc" sta per "Berkeley" anziché "Bench".
user1364368

Grazie. Aggiornato a "calcolatore di base" basato su en.wikipedia.org/wiki/Bc_(programming_language)
Gaff
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.