Переменная CGFloat возвращает 0,0

Когда я пытаюсь это:

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

Консоль возвращает 0, но результат 0,66666666667, а не 0.... Почему это происходит?

Когда я пытаюсь:

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

Он возвращает 3.0, так работает CGFloat? Нет ли способа получить числа запятых с помощью CGFLoat?


person Glatteisen    schedule 22.07.2017    source источник
comment
Вы делаете целочисленное деление, а не с плавающей запятой.   -  person Sami Kuhmonen    schedule 22.07.2017
comment
Вы можете попробовать CGFloat(2)/3, это даст вам правильный результат   -  person Vivek Tyagi    schedule 29.05.2020


Ответы (1)


Если вы не конвертируете, это будет работать отлично.

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

Причина, по которой это не работает с явным преобразованием, заключается в том, что Swift обрабатывает целое число как Int, если оно не имеет контекста.

Это именно то, что происходит внутри скобок преобразования.

person Tamás Sengel    schedule 22.07.2017