Comment trouver la valeur maximale pour Double et Float dans Swift

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.