用Swift计算Pi
我在mac电脑上工作,只要程序还在运行,我就想计算逗号后面的数字。我的问题是,逗号后面的数字不是无止境的,所以我怎样才能使数字尽可能大呢 这是我在程序启动后运行的代码:用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
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所说,您必须以自己的格式对巡演编号进行编码。