Saltar al contenido

Probar si un decimal es un número entero en Swift

Este post fue evaluado por nuestros expertos para asegurar la veracidad de esta división.

Solución:

! Gracias por los comentarios! Esto es lo que estoy usando ahora.

extension Decimal 
    var isWholeNumber: Bool  
        return self.isZero 

Aquí hay una traducción de la solución Objective-C en Comprobar si NSDecimalNumber es un número entero para Swift:

extension Decimal 
    var isWholeNumber: Bool 
        if isZero  return true 
        if !isNormal  return false 
        var myself = self
        var rounded = Decimal()
        NSDecimalRound(&rounded, &myself, 0, .plain)
        return self == rounded
    


print(Decimal(string: "1234.0")!.isWholeNumber) // true
print(Decimal(string: "1234.5")!.isWholeNumber) // false

Esto funciona incluso si la mantisa no es mínima (o el exponente no es máximo), como 100 * 10-1. Ejemplo:

let z = Decimal(_exponent: -1, _length: 1, _isNegative: 0, _isCompact: 1, _reserved: 0,
                _mantissa: (100, 0, 0, 0, 0, 0, 0, 0))

print(z) // 10.0
print(z.exponent) // -1
print(z.isWholeNumber) // true

Aquí puedes ver las comentarios y valoraciones de los usuarios

Recuerda algo, que te damos el privilegio parafrasear .

¡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 *