Como posso gerar Pi para um determinado número de casas decimais de um script?

Respostas:

19

Supondo que você tenha o utilitário bc(Calculadora básica) em seu sistema, você pode usar o seguinte comando e um pouco de matemática antiga para calcular π a 10.000 casas decimais:

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

Provavelmente levará um bom tempo para completar 10.000 casas decimais.

Quebrando o comando ...

  • scale = 10000 - especifica o número de casas decimais a serem usadas no resultado
  • 4 * a (1) - retorna o arco tangente de 1 [que é igual a 45 °: 45 x (π / 180) ou ¼π] e depois multiplica por 4 para obter π.
  • bc -l - canaliza a cadeia de funções completa para o utilitário bc , -l especifica para carregar a biblioteca matemática padrão necessária para a função arco tangente, a () .

Para agrupar isso em um script conforme especificado em sua pergunta, use seu editor favorito para escrever o seguinte e salve-o como generatepi.sh:

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

Em seguida, a partir de um terminal, use chmod +x generatepi.sha pasta em que você salvou o arquivo, o que dará direitos de execução ao script. A sintaxe é então generatepi.sh [number of places]. Observe que isso usa uma maneira muito básica de manipular parâmetros e não validaria a entrada; portanto, certifique-se de passar apenas números inteiros positivos como parâmetro.

A maioria dos sistemas Linux deve ter, bcmas você pode precisar instalá-lo em alguns casos (por exemplo, apt-get no Ubuntu, surgir no Gentoo etc.). Há também uma porta do bc para Windows .

Gaff
fonte
existem calculadoras pi nativas para Windows - os overclockers as usam para testes de estabilidade
Journeyman Geek
~ 3min na minha máquina, bastante inútil em um script. +1 para usar bc.
Cyrus
Eu acho que o "b" em "bc" significa "Berkeley" em vez de "Bench".
usar o seguinte comando
Obrigado. Atualizado para 'calculadora básica' com base em en.wikipedia.org/wiki/Bc_(programming_language)
Gaff