目前的学习Swift,有很多方法可以找到整数和 min 的值,用于{strong>整数,例如Int.max
和{ {1}}。
有没有办法找到Double和Float的最大值?此外,我应该针对这类问题提及哪一份文件?我目前正在阅读Apple的 The Swift Programming Language 。
答案 0 :(得分:116)
从Swift 3开始,你应该使用:
CGFloat.greatestFiniteMagnitude
Double.greatestFiniteMagnitude
Float.greatestFiniteMagnitude
答案 1 :(得分:64)
虽然没有Double.max
,但它在C float.h
标头中定义,您可以通过import Darwin
在Swift中访问该标头。
import Darwin
let fmax = FLT_MAX
let dmax = DBL_MAX
这些分别约为3.4 * 10^38
和1.79 * 10^308
。
但请记住,浮点数不是那么简单(浮点数从来都不简单)。当保持这么大的数字时,你会失去精确度,类似于用非常小的数字丢失精度,所以:
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
答案 2 :(得分:10)
AV的答案很好,但我发现这些宏很难记住而且有点不明显,所以我最终让Double.MIN
和朋友们一起工作:
extension Double {
static var MIN = -DBL_MAX
static var MAX_NEG = -DBL_MIN
static var MIN_POS = DBL_MIN
static var MAX = DBL_MAX
}
不要使用小写的最小值和最大值 - 这些符号在Swift 3中使用。
答案 3 :(得分:6)
刚写
let mxFloat = MAXFLOAT
你将获得swif中float的最大值。
答案 4 :(得分:3)
所有这些都使用swift5。
{{3}}
答案 5 :(得分:2)
在这种情况下,CGFloat.infinity
,Double.infinity
或仅.infinity
都是有用的。
答案 6 :(得分:1)
与 swift 5
一起使用public extension Double {
/// Max double value.
static var max: Double {
return Double(greatestFiniteMagnitude)
}
/// Min double value.
static var min: Double {
return Double(-greatestFiniteMagnitude)
}
}