2014-06-04 9 views
20

Laut Apples Dokumentation unterstützt Swift keine Präprozessordirektiven. In C/Objective-c ist die "INFINITY" -Definition für einige Überprüfungen sehr nützlich. Also, wie bekomme ich eine Nummer, die nie weniger ist als die andere?INFINITY in Swift Lang

+0

Sie könnten versuchen, den Schwimmer ein durch den Schwimmer Null geteilt wird. –

+1

@Pascal: Das bringt dir wahrscheinlich den Float NaN. Oder ein Unfall. – rickster

+1

@rickster Ich glaube, dass die Leute bei Apple mit IEEE 754 ein wenig vertrauter sind als das. –

Antwort

31

Es schon unendlich buildin ist und auch eine Prüffunktion. Und Sie können sie auch direkt mit < vergleichen.

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

Vielleicht können Sie finite versuchen, zum Beispiel

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

Für ganzzahlige Werte sollten Sie Int.max verwenden.

var highestNumber = Int.max 

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

Mit NSIntegerMax statt Int.max oder -1 * NSIntegerMax statt Int.min entspricht, aber weniger hübsch. (Danke @Charlesism)

+8

Oder "Int.max", die besser liest als "NSIntegerMax" – Charlesism

0

für Float-Werte,

import UIKit 

typealias Space = Float 

var MaxSpaceSize = Space.infinity 

var space:Space = 1100 

space = space * 2