Бесконечность в Swift Lang

согласно документации Apple, Swift не поддерживает директивы препроцессора. В C/Objective-C определение "бесконечности" очень полезно для некоторых проверок. Итак, как мне получить номер, который никогда не меньше, чем другой?

4 ответов


уже есть buildin infinity, а также функция проверки. И вы также можете напрямую сравнить их с <.>

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.


для целочисленных значений следует использовать Int.max.

var highestNumber = Int.max

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

используя NSIntegerMax вместо Int.max или -1 * NSIntegerMax вместо Int.min эквивалентно, но менее красиво. (Спасибо @Charlesism)


возможно, вы можете попробовать finite, например,

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

для значений Float,

import UIKit

typealias Space = Float

var MaxSpaceSize = Space.infinity

var space:Space = 1100

space = space * 2