我写了一个小小的Swift程序,为前一个数字添加一个数字,直到达到无穷大。但是,在达到双倍最大值之前达到无穷大。
这是为什么? (我在下面回答。)
为自己运行:
import Foundation
import Darwin
var current: Double = 1
var previous: Double = 0
var register: Double = 0
var infinity = Double.infinity
var isInfinite = infinity.isInfinite
var n = 1
while current < infinity {
register = current
current = previous + register
print("\(n): \(current)")
guard current != infinity else { break }
previous = register
n += 1
}
print("\n")
print("Double limit is \(DBL_MAX)")
print("Distance to limit is \(DBL_MAX - register)")
print("Yet, \(previous) + \(register) reached infinity")
答案 0 :(得分:0)
添加后:
print((DBL_MAX - register) - previous)
到我的代码结尾,我意识到我的错误并没有完全掌握e+
符号。
因此,上面打印出来:
-3.17059852116705e+307
显示Double Max在最终计算中被覆盖,证明为什么达到无穷大。
嗯,我现在已经在公共场合学习了!