How to print 1000 decimals places of pi value?

2019-03-24 15:59发布

I would like to print e.g. 1000 or 2000 or 15000 decimals of pi value using R?

Now I get only six

> pi
[1] 3.141593

How to achieve this?

标签: math r pi
7条回答
聊天终结者
2楼-- · 2019-03-24 16:05

One of the easiest algorithms to use is probably a spigot. I don't know R but it's probably good enough to implement the ideas here.

查看更多
放荡不羁爱自由
3楼-- · 2019-03-24 16:10

If you don't want to do the calculation yourself then you could look the number up. For example

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="")

would produce

> pistring
[1] "3.14159265358979323846264338327950288419716939937510582097494459230781640628"
查看更多
手持菜刀,她持情操
4楼-- · 2019-03-24 16:15

R works with the underlying system's floating point data type which typically have around 16 significant decimal figures.

If you want lots of digits of pi then you'll need to hold them in a character array of some such construct. You simply can't fit more than a handful into an R numeric value.

If you wish to generate the digits yourself then a websearch will reveal many articles outlining algorithms to do the job. Or you can find plenty of sites that just list pi to a gazillion digits.

查看更多
成全新的幸福
5楼-- · 2019-03-24 16:15

It is very much possible. Please download package Rmpfr.

Then, use following:

library(Rmpfr)

Const("pi", 3333)

It will give value of pi correct to 1000 decimal places.

查看更多
不美不萌又怎样
6楼-- · 2019-03-24 16:18

Not sure whether you can print 1000 or 2000, but this way you can specify how many digits are printed:

   print(pi, digits=10)
查看更多
时光不老,我们不散
7楼-- · 2019-03-24 16:22

Using the R package bc (which is available at the foregoing link, not on CRAN):

> library(bc)
> bc("4 * a(1)", scale = 1000)
[1] "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201988"
查看更多
登录 后发表回答