Saltar al contenido

Cómo encontrar el valor máximo para Double y Float en Swift

Después de consultar con expertos en este tema, programadores de varias áreas y profesores hemos dado con la solución a la interrogande y la compartimos en esta publicación.

Solución:

A partir de Swift 3+, debe usar:

CGFloat.greatestFiniteMagnitude
Double.greatestFiniteMagnitude
Float.greatestFiniteMagnitude

mientras no hay Double.maxse define en la C float.h encabezado, al que puede acceder en Swift a través de import Darwin.

import Darwin

let fmax = FLT_MAX
let dmax = DBL_MAX

Estos son aproximadamente 3.4 * 10^38 y 1.79 * 10^308 respectivamente.

Pero tenga en cuenta que no es tan simple con números de punto flotante (nunca es simple con números de punto flotante). Cuando mantienes números tan grandes, pierdes precisión de manera similar a perder precisión con números muy pequeños, entonces:

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

Entonces, antes de entrar en algunos cálculos que posiblemente podrían repasar estos límites, probablemente debería leer sobre el punto flotante. Aquí y aquí son probablemente un buen comienzo.

La respuesta de AV está bien, pero encuentro que esas macros son difíciles de recordar y un poco no obvias, así que finalmente hice Double.MIN y amigos trabajan:

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

No use minúsculas min y max; esos símbolos se usan en Swift 3.

Aquí tienes las reseñas y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *