2014-06-04 12 views
20

Secondo la documentazione Apple, Swift non supporta le direttive del preprocessore. In C/Objective-c la definizione di "INFINITY" è molto utile per alcuni controlli. Quindi, come ottengo un numero che non è mai inferiore a un altro?INFINITY in Swift Lang

+0

Si potrebbe provare a dividere il galleggiante uno dal galleggiante zero. –

+1

@Pascal: Probabilmente ottieni il NaN float. O un incidente. – rickster

+1

@rickster Credo che la gente di Apple abbia un po 'più familiarità con IEEE 754 di quello. –

risposta

31

c'è già buildin all'infinito e anche una funzione di controllo. E potresti anche confrontarli direttamente con <.

var infinity = Double.infinity 
var isInfinite = infinity.isInfinite 
var someDouble = 234432.0 
if someDouble < infinity { 
    println("Less than") 
} else { 
    println("Small than") 
} 
// And the answer is Less than. 
0

Forse si può provare finite, per esempio,

let x:CDouble = 0.1 
finite(x) // which return a CInt 
3

Per valori interi, è necessario utilizzare Int.max.

var highestNumber = Int.max 

//if you need negative infinity 
var lowestNumber = Int.min 

Utilizzando NSIntegerMax invece di Int.max o -1 * NSIntegerMax invece di Int.min è equivalente, ma meno carina. (Grazie @Charlesism)

+8

Oppure "Int.max" che legge meglio di "NSIntegerMax" – Charlesism

0

Per valori Float,

import UIKit 

typealias Space = Float 

var MaxSpaceSize = Space.infinity 

var space:Space = 1100 

space = space * 2