Apprentissage actuel Swift, il existe des moyens de trouver les valeurs max et min pour différents types d’ entier comme Int.max
et Int.min
.
Est-il possible de trouver la valeur maximale pour Double et Float? De plus, quel document dois-je référer pour ce genre de question? Je lis actuellement le langage de programmation Swift d’ Apple.
Bien qu’il n’y ait pas de Double.max
, il est défini dans l’en-tête C float.h
, auquel vous pouvez accéder via Swift via l’ import Darwin
.
import Darwin let fmax = FLT_MAX let dmax = DBL_MAX
Celles-ci sont environ 3.4 * 10^38
et 1.79 * 10^308
respectivement.
Mais gardez à l’esprit que ce n’est pas si simple avec des nombres à virgule flottante (ce n’est jamais simple avec des nombres à virgule flottante). Lorsque vous tenez des nombres aussi grands, vous perdez en précision de la même manière que vous perdez de la précision avec de très petits nombres, donc:
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 se comparer à ces limites, vous devriez probablement les lire en virgule flottante. Ici et ici sont probablement un bon début.
A 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 fonctionner Double.MIN
et Double.MIN
amis:
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 minuscules et les majuscules minuscules – ces symboles sont utilisés dans Swift 3.
Ecrivez
let mxFloat = MAXFLOAT
Vous obtiendrez une valeur maximale de float dans swif.