Eu quero converter um Float
para um Int
no Swift. Fundição básicas como isso não funciona porque esses tipos não são primitivos, ao contrário de float
s e int
s em Objective-C
var float: Float = 2.2
var integer: Int = float as Float
Mas isso produz a seguinte mensagem de erro:
'Float' não é conversível em 'Int'
Alguma idéia de como converter propriedade de Float
para Int
?
as
operador é para fazer a conversão para subclasses. ou seja:UIView as UIButton
Respostas:
Você pode converter
Float
paraInt
no Swift assim:Você também pode obter esse resultado com o comentário de @ paulm:
fonte
var myIntValue = Int(myFloatValue)
trabalho.Conversão explícita
A conversão para Int perderá qualquer precisão (efetivamente arredondando para baixo). Ao acessar as bibliotecas de matemática, você pode executar conversões explícitas. Por exemplo:
Se você deseja arredondar para baixo e converter para número inteiro:
resultado é 10.
Se você deseja arredondar para cima e converter para número inteiro:
resultado é 11.
Se você deseja arredondar explicitamente para o número inteiro mais próximo
resultado é 11.
No último caso, isso pode parecer pedante, mas é semanticamente mais claro, pois não há conversão implícita ... importante se você estiver processando o sinal, por exemplo.
fonte
round(10.5) == 11.0
A conversão é simples:
Mas não é seguro:
Será devido a um bom acidente:
Então, eu criei uma extensão que lida com o estouro:
Espero que isso possa ajudar alguém
fonte
Existem várias maneiras de arredondar números com precisão. Você deve eventualmente usar o método de biblioteca padrão da swift
rounded()
para arredondar o número da bóia com a precisão desejada.Para arredondar a
.up
regra de uso :Para arredondar para baixo, use a
.down
regra:Para arredondar para o número inteiro mais próximo, use a
.toNearestOrEven
regra:Esteja ciente do seguinte exemplo:
fonte
Como isso:
fonte
Você pode obter uma representação inteira do seu float passando o float para o método inicializador Integer.
Exemplo:
Lembre-se de que qualquer número após o ponto decimal será uma perda. Significado, 3,9 é um Int de 3 e 8,99999 é um número inteiro de 8.
fonte
Use uma conversão de estilo de função (encontrada na seção "Conversão de números inteiros e de ponto flutuante" em " A linguagem de programação Swift " . [Link do iTunes])
fonte
Você pode digitar o elenco assim:
fonte
Basta usar a conversão de tipo
mostrará o valor do arredondamento, por exemplo: Valor inteiro = 5 significa que o ponto decimal será perda
fonte
fonte
Isso é suficiente para converter de
float
paraInt
fonte
Suponha que você armazene o valor flutuante
"X"
e esteja armazenando o valor inteiro"Y"
.ou
fonte
Use em
Int64
vez deInt
.Int64
pode armazenar grandes valores int.fonte
Float
ter um intervalo de valores maior queInt
?