Как найти максимальное значение для Double и Float в Swift


текущее обучение Swift, есть способы найти макс и мин значение для различных видов целое как Int.max и Int.min.

есть ли способ найти максимальное значение для Double и Float? Кроме того, какой документ я должен ссылаться на этот вопрос? В настоящее время я читаю Apple Язык Программирования Swift.

4   51   2015-02-15 14:15:58

4 ответа:

пока нет Double.max, он определен в C float.h заголовок, к которому вы можете получить доступ в Swift через import Darwin.

import Darwin

let fmax = FLT_MAX
let dmax = DBL_MAX

это ориентировочно 3.4 * 10^38 и 1.79 * 10^308 соответственно.

но имейте в виду, что это не так просто с числами с плавающей запятой (это никогда не бывает просто с числами с плавающей запятой). Когда вы держите числа такими большими, вы теряете точность аналогично потере точности с очень маленькими числами, поэтому:

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

так что, прежде чем вы получите в некоторых расчетах, которые могут быть связаны с этими ограничениями, вы, вероятно, должны прочитать о плавающей точке. здесь и здесь - вероятно, хорошее начало.

начиная с Swift 3, Вы должны использовать:

CGFloat.greatestFiniteMagnitude
Double.greatestFiniteMagnitude
Float.greatestFiniteMagnitude

ответ AV в порядке, но я нахожу эти макросы трудными для запоминания и немного неочевидными, поэтому в конце концов я сделал Double.MIN и друзья работают:

extension Double {
    static var MIN     = -DBL_MAX
    static var MAX_NEG = -DBL_MIN
    static var MIN_POS =  DBL_MIN
    static var MAX     =  DBL_MAX
}

Не используйте нижний регистр min и max -- эти символы используются в Swift 3.

Просто Писать

    let mxFloat = MAXFLOAT

вы получите максимальное значение float в swif.