Quiero convertir una Float
a una Int
en Swift. Moldeo básico como este no funciona debido a que estos tipos no son primitivas, a diferencia de float
s y int
S en Objective-C
var float: Float = 2.2
var integer: Int = float as Float
Pero esto produce el siguiente mensaje de error:
'Flotar' no es convertible a 'Int'
¿Alguna idea de cómo convertir de propiedad Float
a Int
?
as
operador es para bajar a subclases. es decir:UIView as UIButton
Respuestas:
Puede convertir
Float
aInt
en Swift así:También puede lograr este resultado con el comentario de @paulm:
fuente
var myIntValue = Int(myFloatValue)
trabajos.Conversión explícita
La conversión a Int perderá cualquier precisión (redondeando efectivamente hacia abajo). Al acceder a las bibliotecas de matemáticas, puede realizar conversiones explícitas. Por ejemplo:
Si desea redondear hacia abajo y convertir a entero:
el resultado es 10.
Si desea redondear y convertir a entero:
el resultado es 11.
Si desea redondear explícitamente al entero más cercano
el resultado es 11.
En el último caso, esto puede parecer pedante, pero es semánticamente más claro ya que no hay conversión implícita ... importante si está haciendo procesamiento de señal, por ejemplo.
fuente
round(10.5) == 11.0
La conversión es simple:
Pero no es seguro:
Will debido a un buen accidente:
Así que he creado una extensión que maneja el desbordamiento:
Espero que esto pueda ayudar a alguien
fuente
Hay muchas formas de redondear números con precisión. Eventualmente, debe usar el método de biblioteca estándar de swift
rounded()
para redondear el número flotante con la precisión deseada.Para redondear , use la
.up
regla:Para redondear , use la
.down
regla:Para redondear al entero más cercano, use la
.toNearestOrEven
regla:Tenga en cuenta el siguiente ejemplo:
fuente
Me gusta esto:
fuente
Puede obtener una representación entera de su flotador pasando el flotador al método de inicializador de enteros.
Ejemplo:
Tenga en cuenta que cualquier número después del punto decimal será una pérdida. Es decir, 3.9 es un Int de 3 y 8.99999 es un entero de 8.
fuente
Utilice una conversión de estilo de función (que se encuentra en la sección denominada "Conversión de enteros y coma flotante" de " El lenguaje de programación Swift " [enlace de iTunes])
fuente
Puedes escribir cast así:
fuente
Solo usa tipo casting
mostrará el valor de redondeo, por ejemplo: IntegerValue = 5 significa que el punto decimal será pérdida
fuente
fuente
Esto es suficiente para convertir de
float
aInt
fuente
Supongamos que almacena el valor flotante
"X"
y almacena el valor entero"Y"
.o
fuente
Usar en
Int64
lugar deInt
.Int64
puede almacenar grandes valores int.fuente
Float
tener un rango de valores mayor queInt
?