web-dev-qa-db-fra.com

Comment trouver la valeur maximale pour Double et Float dans Swift

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).

59
Lorem Ipsum Dolor

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.

66
Airspeed Velocity

À partir de Swift 3, vous devez utiliser:

CGFloat.greatestFiniteMagnitude
Double.greatestFiniteMagnitude
Float.greatestFiniteMagnitude
122
Vadoff

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.

10
AmigoNico

Ecrivez

    let mxFloat = MAXFLOAT

Vous obtiendrez une valeur maximale de float en swift.

6
praveen kumar

Tous avec Swift 5.

enter image description here

0
Shady Ghalab