如何在Swift中findDouble和Float的最大值

目前学习Swift,有很多方法可以find不同种类Integer的 最大值最小值 ,如Int.maxInt.min

有没有办法find双和浮动的最大值? 而且,我应该参考哪个文件来解决这个问题呢? 我正在阅读苹果的Swift编程语言

虽然没有Double.max ,但它在C的float.h头文件中定义,您可以通过import Darwin在Swift中访问它。

 import Darwin let fmax = FLT_MAX let dmax = DBL_MAX 

这些分别是大约3.4 * 10^381.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 

所以,在你进行一些可能超出这些限制的计算之前,你应该阅读浮点数。 这里和这里可能是一个好的开始。

从Swift 3开始,你应该使用:

 CGFloat.greatestFiniteMagnitude Double.greatestFiniteMagnitude Float.greatestFiniteMagnitude 

AV的回答很好,但我发现这些macros很难记住,有点不明显,所以最终我让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中使用。

写吧

  let mxFloat = MAXFLOAT 

swif中将获得float的最大值。