Як я можу генерувати Pi до заданої кількості знаків після коми у сценарії?


Відповіді:


19

Якщо припустити, що у вашій системі є утиліта bc(Основний калькулятор) , ви можете використати наступну команду та трохи хорошої старої математики для обчислення π до 10 000 десяткових знаків:

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

Можливо, це займе досить багато часу, щоб заповнити 10 000 десяткових знаків.

Розбиття команди вниз ...

  • шкала = 10000 - це визначає кількість десяткових знаків, які будуть використані для результату
  • 4 * a (1) - це повертає арктангент 1 [, який дорівнює 45 °: 45 х (π / 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, з'явитися на Gentoo тощо). Існує також порт bc для Windows .


є рідні калькулятори pi для Windows - оверклокери використовують їх для тестування на стабільність
Journeyman Geek

~ 3 хв на моїй машині, досить марний у сценарії. +1, хоча для використання bc.
cYrus

Я думаю, що "b" у "bc" означає скоріше "Berkeley", а не "Bench".
користувач1364368

Дякую. Оновлено до "базового калькулятора" на основі en.wikipedia.org/wiki/Bc_(programming_language)
Gaff
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.