Bagaimana saya bisa menghasilkan Pi ke sejumlah tempat desimal dari skrip?


Jawaban:


19

Dengan asumsi Anda memiliki utilitas bc(Kalkulator Dasar) pada sistem Anda, Anda dapat menggunakan perintah berikut dan sedikit matematika lama yang baik untuk menghitung π hingga 10.000 tempat desimal:

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

Ini mungkin akan memakan waktu cukup lama untuk menyelesaikan 10.000 tempat desimal.

Melanggar perintah ...

  • scale = 10000 - ini menentukan jumlah tempat desimal yang digunakan untuk hasilnya
  • 4 * a (1) - ini mengembalikan arctangent dari 1 [yang sama dengan 45 °: 45 x (π / 180), atau ¼π] kemudian dikalikan dengan 4 untuk mendapatkan π.
  • bc -l - pipa string fungsi lengkap ke utilitas bc , -l menentukan untuk memuat perpustakaan matematika standar yang diperlukan untuk fungsi arctangent, a () .

Untuk membungkus ini dalam skrip seperti yang Anda tentukan dalam pertanyaan Anda, gunakan editor favorit Anda untuk menulis yang berikut dan simpan sebagai generatepi.sh:

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

Kemudian dari penggunaan terminal chmod +x generatepi.shdari folder Anda menyimpan file, yang akan memberikan hak eksekusi skrip. Sintaksnya kemudian generatepi.sh [number of places]. Catatan ini menggunakan cara penanganan parameter yang sangat mendasar dan tidak akan memvalidasi input, jadi pastikan Anda hanya memberikan bilangan bulat positif sebagai parameter.

Kebanyakan sistem Linux seharusnya memiliki bctetapi Anda mungkin perlu menginstalnya dalam beberapa kasus (misalnya apt-get di Ubuntu, emerge di Gentoo dll). Ada juga port bc untuk Windows .


ada kalkulator pi asli untuk windows - overclocker menggunakannya untuk pengujian stabilitas
Journeyman Geek

~ 3 menit di mesin saya, cukup berguna dalam skrip. +1 meskipun untuk digunakan bc.
cYrus

Saya pikir "b" dalam "bc" singkatan dari "Berkeley" daripada "Bench".
user1364368

Terima kasih. Diperbarui ke 'kalkulator dasar' berdasarkan en.wikipedia.org/wiki/Bc_(programming_language)
Gaff
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.