用Swift计算Pi

用Swift计算Pi,swift,pi,Swift,Pi,我在mac电脑上工作,只要程序还在运行,我就想计算逗号后面的数字。我的问题是,逗号后面的数字不是无止境的,所以我怎样才能使数字尽可能大呢 这是我在程序启动后运行的代码: var n = 1.0 var pi = 0.0 while true { pi = pi + 4/n n = n + 2 pi = pi - 4/n n = n + 2 print(pi) } 因此,它仍然有效,但由于双精度的原因,只适用于逗号后的14位。您需要自己表示十进制数。@Gl

我在mac电脑上工作,只要程序还在运行,我就想计算逗号后面的数字。我的问题是,逗号后面的数字不是无止境的,所以我怎样才能使数字尽可能大呢

这是我在程序启动后运行的代码:

var n = 1.0
var pi = 0.0
while true {
    pi = pi + 4/n
    n = n + 2
    pi = pi - 4/n
    n = n + 2
    print(pi)
}

因此,它仍然有效,但由于双精度的原因,只适用于逗号后的14位。

您需要自己表示十进制数。@Glorfindel
NSDecimalNumber
在这个问题上与
double
没有太大区别。它会稍微精确一些(以10为基数对以2为基数),但不会存储更多的数字。使用
NSDecimalNumber
的结果是
3.1415886535897934450644515276178324225646972656250000000
,使用
Double
3.1415886535897810105666394520085304975509643554675000000000
NSDecimalNumber
不会让数字无休止。如果答案上有所有的反对票,请改为“注释”尝试提供帮助:注意
print
仅打印小数点后的15位数字。这是swift()中的一个已知错误。通过将其转换为字符串,您可以获得更多的小数。具体来说,下面是将double转换为逗号后有20位数字的字符串的示例:
string(格式:“%.20f”,doubleValue)
您可以打印问题中计算的大约50位数字<代码>扩展双{func-toString(带数字:UInt)->String{return String(format:“%.\(digits)f”,self)},
print(pi.toString(带数字:50))
我认为在任何编程语言中都不会有无限的数字格式,因为它需要无限的内存。正如Sulthan所说,您必须以自己的格式对巡演编号进行编码。