2017-07-22 41 views
0

Lorsque je tente ceci:variables CGFloat retourne 0.0

let progress: CGFloat = CGFloat(2/3) 
print(progress) 

La console retourne 0 mais le résultat est 0,66666666667, pas 0 .... Pourquoi est-il ainsi?

Lorsque je tente:

let progress: CGFloat = CGFloat(10/3) 
print(progress) 

Il retourne 3.0, est que la façon dont fonctionne comment CGFloat? Est-il impossible d'obtenir des virgules avec CGFLoat?

+1

Vous faites une division entière, pas de virgule flottante. –

Répondre

3

Si vous omettez la conversion, cela fonctionnera parfaitement.

let progress: CGFloat = 2/3 
print(progress) //0.666666666666667 

La raison pour laquelle cela ne fonctionne pas avec la conversion explicite est beause Swift traite un nombre entier comme Int si elle est sans contexte.

C'est exactement ce qui se passe à l'intérieur des parenthèses de conversion.