Apprentissage en cours Swift, il existe des moyens de trouver max et min valeur pour type différent de Integer comme Int.max
et Int.min
.
Est-il possible de trouver la valeur maximale pour Double et Float? De plus, à quel document dois-je me référer pour ce genre de question? Je lis actuellement le Le Swift).
Bien qu'il n'y ait pas de Double.max
, il est défini dans le C float.h
en-tête, auquel vous pouvez accéder dans Swift via import Darwin
.
import Darwin
let fmax = FLT_MAX
let dmax = DBL_MAX
Ce sont approximativement 3.4 * 10^38
et 1.79 * 10^308
respectivement.
Mais gardez à l’esprit que ce n’est pas si simple avec les nombres à virgule flottante (ce n’est jamais simple avec les nombres à virgule flottante). Lorsque vous tenez des nombres aussi grands, vous perdez de la précision de la même manière que vous perdez de la précision avec de très petits nombres. Ainsi:
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
Donc, avant de vous lancer dans des calculs qui pourraient éventuellement effacer ces limites, vous devriez probablement lire en virgule flottante. ici et ici sont probablement un bon début.
À partir de Swift 3, vous devez utiliser:
CGFloat.greatestFiniteMagnitude
Double.greatestFiniteMagnitude
Float.greatestFiniteMagnitude
La réponse de AV est correcte, mais je trouve ces macros difficiles à retenir et un peu non évidentes, alors j'ai finalement fait Double.MIN
et amis travaillent:
extension Double {
static var MIN = -DBL_MAX
static var MAX_NEG = -DBL_MIN
static var MIN_POS = DBL_MIN
static var MAX = DBL_MAX
}
N'utilisez pas les min. Min et max. Ces symboles sont utilisés dans Swift 3.
Ecrivez
let mxFloat = MAXFLOAT
Vous obtiendrez une valeur maximale de float en swift.