Ste*_*n D 62
如果您已tex(1)
安装:
tex --version | head -1 | cut -f2 -d' '
Run Code Online (Sandbox Code Playgroud)
小智 54
你可以使用这个命令:
echo "scale=5; 4*a(1)" | bc -l
3.14159
Run Code Online (Sandbox Code Playgroud)
其中 scale 是小数点后的位数。
参考:http : //www.tux-planet.fr/calculer-le-chiffre-pi-en-ligne-de-commande-sous-linux/
Abr*_*as2 23
对于任意精度的打印,您可以使用bc
和公式pi = 4*atan(1)
:
# bc -l
scale=<your precision>
4*a(1)
Run Code Online (Sandbox Code Playgroud)
use*_*ser 20
如果你想要一些可以计算 ? 值的东西,那么有几种方法。也许最明显的解决方案是使用现成的软件包,如pi
(Debian package link),如果要信任 Debian 的软件包描述,它可以计算任意精度的值,仅受内存限制。
pi
实际上是包含在CLN 库(数字类库)中的一个示例。它包括提供用于生成任意长度数字的工具的示例应用程序,例如 Pi、Fibonacci 等。 CLN 包可在 Debian/Ubuntu 中预先打包(这就是上面的 Debian 链接所指向的内容)。
$ ./pi 10
3.141592653
$ ./pi 20
3.1415926535897932384
Run Code Online (Sandbox Code Playgroud)
注意:这些示例的源代码位于 CLN 代码库的源代码中。
在 Fedora 上,我必须下载源 tarball 并自己构建它,但它构建起来并不大惊小怪。无论出于何种原因cln
,Fedora 上的软件包仅包含库,但忽略了 Debian/Ubuntu 版本(以上)中可用的示例。
Ant*_*hon 18
对于最多一百万位数字,您可以使用以下内容(此处为 3000 位数字):
curl --silent http://www.angio.net/pi/digits/pi1000000.txt | cut -c1-3000
Run Code Online (Sandbox Code Playgroud)
pab*_*ouk 15
其他一些答案在输出的最后位置显示不正确的数字。以下是使用bc
但具有正确舍入结果的答案的变体。该变量s
包含有效数字的位数(包括3
小数点前面)。
$ bc -l <<< "s=5; scale=s+2; pi=4*a(1)+5*10^(-s); scale=s-1; pi/1"
3.1416
Run Code Online (Sandbox Code Playgroud)
$ bc -l <<< "s=5; scale=s+2; pi=4*a(1); scale=s-1; pi/1"
3.1415
Run Code Online (Sandbox Code Playgroud)
舍入直接在 中执行bc
。这没有命令的限制,该命令printf
使用 C 语言double
类型表示的数字具有大约 17 位有效数字的精度。请参阅四舍五入的答案printf
。
scale=s-1
设置要截断的位数。pi/1
将结果除以 1 以应用截断。Simplepi
不会截断数字。
四舍五入需要将 5 添加到第一个将被截断的数字 (5×10 -s ),以便在数字大于等于 5 的情况下,将保留的最后一位数字将增加。
从hobbs的测试看来,scale=s+2
即使对于很长的数字,四舍五入/截断 ( ) 的三个额外数字也足够了。
上面的示例在此处使用支持的字符串,例如 in bash
,ksh
和zsh
。如果您的 shell 不支持此处使用字符串echo
和管道:
$ echo "s=5; scale=s+2; pi=4*a(1); scale=s-1; pi/1" | bc -l
3.1415
Run Code Online (Sandbox Code Playgroud)
don*_*sti 12
perl 一行(使用bignum):
perl -Mbignum=bpi -wle 'print bpi(NUM)'
Run Code Online (Sandbox Code Playgroud)
例如
perl -Mbignum=bpi -wle 'print bpi(6)'
3.14159
Run Code Online (Sandbox Code Playgroud)
使用 python2:
$ python -c "import math; print(str(math.pi)[:7])"
3.14159
Run Code Online (Sandbox Code Playgroud)
使用红宝石:
require "bigdecimal"
require "bigdecimal/math"
include BigMath
BigDecimal(PI(100)).round(9).to_s("F")
3.141592654
Run Code Online (Sandbox Code Playgroud)