当前学习Swift时,有多种方法可以找到不同类型Integer(如Int.max和Int.min)的 max 和 min 值。 有没有办法找到Double和Float的最大值?另外,我应该参考哪篇文档来解决这类问题?我目前正在阅读Apple的The Swift Programming Language。
let d = DBL_MAX
let e = d - 1.0
let diff = d - e
diff == 0.0 // true
let maxPlusOne = DBL_MAX + 1
maxPlusOne == d // true
let inf = DBL_MAX * 2
// perhaps infinity is the “maximum”
inf == Double.infinity // true
6条答案
按热度按时间ef1yzkbh1#
从Swift 3+开始,您应该用途:
pb3s4cty2#
虽然没有
Double.max
,但它是在Cfloat.h
头文件中定义的,您可以在Swift中通过import Darwin
访问它。它们大致分别为
3.4 * 10^38
和1.79 * 10^308
。但请记住,浮点数的计算并不简单(浮点数的计算从来都不简单)。当计算这么大的数字时,精度的损失与计算非常小的数字时精度的损失类似,因此:
因此,在进行一些可能会碰到这些限制的计算之前,您可能应该阅读一下浮点。Here和here可能是一个很好的开始。
3zwtqj6y3#
AV的答案很好,但我发现这些宏很难记住,而且有点不明显,所以最终我让
Double.MIN
和朋友们工作:不要使用小写的min和max --这些符号在Swift 3中使用。
lh80um4z4#
就写
您将获得Swift中浮点数的最大值。
6xfqseft5#
CGFloat.infinity
、Double.infinity
或仅.infinity
在这种情况下也是有用的。uoifb46i6#
与swift 5配合使用