如何打印pi值的1000位小数?

时间:2011-06-04 05:32:18

标签: math r pi

我想要打印,例如使用R?

的pi值的1000或2000或15000小数

现在我只得到六个

> pi
[1] 3.141593

如何实现这一目标?

7 个答案:

答案 0 :(得分:11)

使用R包bc(可在上述链接中找到,而不是在CRAN上):

> library(bc)
> bc("4 * a(1)", scale = 1000)
[1] "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201988"

答案 1 :(得分:9)

如果您不想自己进行计算,那么您可以查看数字。例如

pie <- read.csv("http://oeis.org/A000796/b000796.txt", header=FALSE, sep=" ")
dig <- 75 # up to 20000 digits 
pistring <- paste(c(pie[1,]$V2, ".", head(pie[-1,], dig-1)$V2), collapse="")

会产生

> pistring
[1] "3.14159265358979323846264338327950288419716939937510582097494459230781640628"

答案 2 :(得分:5)

R使用底层系统的浮点数据类型,通常有大约16位有效小数。

如果你需要很多pi的数字,那么你需要将它们保存在一些这样的构造的字符数组中。你根本无法将一小部分放入R数值中。

如果您希望自己生成数字,那么网络搜索将揭示许多文章概述算法来完成这项工作。或者你可以找到很多网站,只列出数以千计的数字。

答案 3 :(得分:5)

您无法打印您不知道的数字。如果R只携带16位十进制数(典型的IEEE双数),则打印1000位数将产生984个无意义的数字。

如果使用工具进行长精度算术,您可以使用here中的一个系列或其他方法(例如,Brent-Salamin算法)生成所需的数字。作为测试,我最近在几次迭代中使用该方法计算了超过250,000个pi的数字。

3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642 0198 ......

答案 4 :(得分:1)

这是非常可能的。请下载包Rmpfr。

然后,使用以下内容:

library(Rmpfr)

Const("pi", 3333)

它会将pi的值正确地赋予1000个小数位。

答案 5 :(得分:0)

不确定您是否可以打印1000或2000,但这样您可以指定打印的位数:

   print(pi, digits=10)

答案 6 :(得分:0)

最简单的算法之一可能是一个龙头。我不知道R但是它可能足以实现这些想法here