Общий вопрос новичков, но это сводит меня с ума! Я пробую это:
myInt = [myFloat integerValue];
но я получаю сообщение об ошибке, по существу, integerValue не работает с поплавками.
Как мне это сделать?
Общий вопрос новичков, но это сводит меня с ума! Я пробую это:
myInt = [myFloat integerValue];
но я получаю сообщение об ошибке, по существу, integerValue не работает с поплавками.
Как мне это сделать?
Я уверен, что синтаксис каста C-стиля работает в Objective C, поэтому попробуйте это тоже:
int myInt = (int) myFloat;
Он может отключить предупреждение компилятора, по крайней мере.
что случилось с:
int myInt = myFloat;
помните, что это будет использовать правило округления по умолчанию, которое равно нулю (т.е. -3.9f становится -3)
int myInt = (int) myFloat;
Работал хорошо для меня.
int myInt = [[NSNumber numberWithFloat:myFloat] intValue];
Ну, это один из вариантов. Если вам нравится обход, я мог бы подумать о некоторых из них, используя NSString. Почему легко, когда есть сложная альтернатива?:)
Вы также можете использовать C lroundf(myFloat)
.
Невероятно полезный совет: в редакторе Xcode введите свой код как say
myInt = roundf(someFloat);
затем выполните управление/щелкните правой кнопкой мыши по roundf
и Перейти к определению (или просто щелкнуть по команде).
Затем вы четко увидите очень длинный список доступных функций. (Невозможно запомнить их всех, поэтому просто используйте этот трюк.)
Например, в примере, вероятно, что lrintf
- это то, что вы хотите.
Еще один совет: получить документацию по этим многочисленным функциям. В вашем Terminal.app(или любой оболочке - ничего общего с Xcode, просто обычный Terminal.app) просто введите man lrintf
, и он предоставит вам полную информацию. Надеюсь, это поможет кому-то.
В поддержку размотки помните, что Objective-C является надмножеством C, а не совершенно новым языком.
Все, что вы можете сделать в обычном старом ANSI C, можно сделать в Objective-C.
Вот более краткий подход, который был введен в 2012 году:
myInt = @(myFloat).intValue;