2015-12-15 5 views
3

Я пытался сделать что-то вроде этогоSwift эквивалент ceilf для CGFloat

var myCGFloat: CGFloat = 3.001 
ceilf(myCGFloat) 

но ceilf принимает только Float значения. При поиске вокруг было много разных ответов о выполнении этого преобразования или в зависимости от того, является ли это 32 или 64-битной архитектурой.

Получается, что решение довольно просто, но мне потребовалось слишком много времени, чтобы его найти. Поэтому я пишу это Q & Пара как ярлык для других.

+1

Связанный вопрос здесь: http://stackoverflow.com/questions/30647127/cgfloat-type-swift. –

+0

@MartinR, Ваш ответ был тем, что я искал вчера, но мои ключевые слова для поиска не включали его. Спасибо за публикацию ссылки. – Suragch

ответ

9

Быстрый способ сделать это сейчас - использовать rounded(.up) (или round(.up), если вы хотите изменить переменную на месте). Behind the scenes it is using ceil, который может принимать CGFloat в качестве параметра и равен architecture independent.

let myCGFloat: CGFloat = 3.001 
let y = myCGFloat.rounded(.up) // 4.0 

Это эквивалентно

var myCGFloat: CGFloat = 3.001 
let y = ceil(myCGFloat) // 4.0 

Любое использование ceilf больше нет необходимости.

См. Также my fuller Ответ на вопрос CGFloat с различными правилами округления.

Смежные вопросы