Как найти максимальное значение для Double и Float в Swift
текущее обучение Swift, есть способы найти макс и мин значение для различных видов целое как Int.max и Int.min.
есть ли способ найти максимальное значение для Double и Float? Кроме того, какой документ я должен ссылаться на этот вопрос? В настоящее время я читаю Apple Язык Программирования Swift.
4 ответов:
пока нет
Double.max, он определен в Cfloat.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.
Comments