Как мне преобразовать число с плавающей точкой в ​​int в Objective C? - PullRequest
50 голосов
/ 13 ноября 2008

Общий вопрос новичка, но это сводит меня с ума! Я пытаюсь это:

myInt = [myFloat integerValue]; 

но я получаю сообщение о том, что по существу integerValue не работает с плавающей точкой.

Как мне это сделать?

Ответы [ 6 ]

124 голосов
/ 13 ноября 2008

Я почти уверен, что синтаксис приведения в стиле C работает в Objective C, поэтому попробуйте тоже:

int myInt = (int) myFloat;

Это может отключить предупреждение компилятора, как минимум.

11 голосов
/ 13 ноября 2008

что не так с:

int myInt = myFloat;

имейте в виду, что при этом будет использоваться правило округления по умолчанию, которое приближается к нулю (т.е. -3.9f становится -3)

8 голосов
/ 07 августа 2011
int myInt = (int) myFloat;

Отлично сработало для меня.

int myInt = [[NSNumber numberWithFloat:myFloat] intValue];

Ну, это один из вариантов. Если вам нравится обход, я мог бы подумать о некоторых, использующих NSString Почему легко, когда есть сложная альтернатива? :)

6 голосов
/ 29 сентября 2013

Вы также можете использовать C's lroundf(myFloat).


Невероятно полезный совет: в редакторе Xcode введите свой код, скажем

myInt = roundf(someFloat);

затем управляйте / щелкайте правой кнопкой мыши по roundf и Переходите к определению (или просто щелчком по команде).

После этого вы ясно увидите очень длинный список доступных вам функций . (Невозможно запомнить их все, так что просто используйте этот трюк.)

Например, в данном примере вполне вероятно, что lrintf - это то, что вам нужно.

Еще один совет: получить документацию по этим многочисленным функциям. В вашем Terminal.app (или в любой оболочке - ничего общего с Xcode, , просто обычный Terminal.app ) просто введите man lrintf, и он даст вам полную информацию. Надеюсь, это кому-нибудь поможет.

2 голосов
/ 14 ноября 2008

В поддержку раскрутки помните, что Objective-C является надмножеством C, а не совершенно новым языком.

Все, что вы можете сделать в обычном старом ANSI C, можно сделать в Objective-C.

0 голосов
/ 20 июля 2015

Вот более краткий подход, который был введен в 2012 году:

myInt = @(myFloat).intValue;
...