Как я могу сгенерировать Pi для заданного числа десятичных знаков из скрипта?


Ответы:


19

Предполагая, что в вашей системе есть утилита bc(Basic Calculator) , вы можете использовать следующую команду и немного старой доброй математики для вычисления от π до 10000 десятичных знаков:

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

Это, вероятно, займет много времени, чтобы заполнить 10 000 знаков после запятой.

Нарушая команду ...

  • scale = 10000 - указывает количество десятичных разрядов для использования в результате
  • 4 * a (1) - это возвращает арктангенс 1 [который равен 45 °: 45 x (π / 180) или ¼π], затем умножается на 4, чтобы получить π.
  • bc -l - передать всю строку функции в утилиту bc , -l указывает на загрузку стандартной математической библиотеки, необходимой для функции arctangent, a () .

Чтобы обернуть это в сценарий, как вы указали в своем вопросе, используйте ваш любимый редактор, чтобы написать следующее и сохранить его как generatepi.sh:

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

Затем из терминала используйте chmod +x generatepi.shпапку, в которую вы сохранили файл, который даст права на выполнение скрипта. Синтаксис тогда generatepi.sh [number of places]. Обратите внимание, что здесь используется очень простой способ обработки параметров, и он не проверяет входные данные, поэтому убедитесь, что вы передаете ему только положительные целые числа в качестве параметра.

Большинство систем Linux должны иметь его, bcно в некоторых случаях вам может потребоваться его установка (например, apt-get в Ubuntu, emerge в Gentoo и т. Д.). Также есть порт bc для Windows .


есть родные пи калькуляторы для Windows - оверклокеры используют их для тестирования стабильности
Journeyman Geek

~ 3 минуты на моей машине, довольно бесполезно в сценарии. +1 хоть за использование bc.
cYrus

Я думаю, что «b» в «bc» означает «Беркли», а не «Скамейка».
user1364368

Спасибо. Обновлен до «базового калькулятора» на основе en.wikipedia.org/wiki/Bc_(programming_language)
Gaff
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.