Как напечатать 1000 знаков после запятой значения пи? - PullRequest
14 голосов
/ 04 июня 2011

Я хотел бы напечатать, например, 1000, 2000 или 15000 десятичных знаков числа Пи, используя R?

Теперь я получаю только шесть

> pi
[1] 3.141593

Как этого добиться?

Ответы [ 7 ]

11 голосов
/ 04 июня 2011

Использование пакета R bc (который доступен по вышеуказанной ссылке, но не в CRAN):

> library(bc)
> bc("4 * a(1)", scale = 1000)
[1] "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201988"
9 голосов
/ 04 июня 2011

Если вы не хотите выполнять вычисления самостоятельно, вы можете посмотреть число вверх. Например

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"
5 голосов
/ 04 июня 2011

Вы не можете печатать цифры, которые вы не знаете.Если R содержит только 16 десятичных цифр (типичная двойная цифра IEEE), то при печати 1000 цифр будет получено 984 бессмысленных цифры.

Вы можете использовать один из серий или другие методы здесь (напримералгоритм Брента-Саламина) для генерации необходимого числа цифр, ЕСЛИ вы используете инструмент для арифметики с высокой точностью.В качестве теста я недавно вычислил более 250 000 цифр числа Пи с помощью этого метода всего за несколько итераций.

3....

5 голосов
/ 04 июня 2011

R работает с базовым типом данных с плавающей запятой, который обычно имеет около 16 значащих десятичных цифр.

Если вам нужно много цифр числа пи, вам нужно будет поместить их в массив символов какой-либо такой конструкции. Вы просто не можете уместить в числовое значение R больше, чем несколько.

Если вы хотите сами сгенерировать цифры, тогда веб-поиск покажет множество статей, в которых описываются алгоритмы для выполнения этой работы. Или вы можете найти множество сайтов, которые просто перечисляют число с пи до миллиарда цифр.

1 голос
/ 10 августа 2015

Это очень возможно. Пожалуйста, скачайте пакет Rmpfr.

Затем используйте следующее:

library(Rmpfr)

Const("pi", 3333)

Это даст правильное значение числа Пи до 1000 знаков после запятой.

0 голосов
/ 04 июня 2011

Один из самых простых алгоритмов, который можно использовать, - это, вероятно, spigot.Я не знаю R, но, вероятно, достаточно хорошо, чтобы реализовать идеи здесь .

0 голосов
/ 04 июня 2011

Не уверен, можете ли вы печатать 1000 или 2000, но таким образом вы можете указать, сколько цифр будет напечатано:

   print(pi, digits=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...