как мне преобразовать число с плавающей точкой в int в objective c?

<p>полный вопрос новичка, но это сводит меня с ума! я пытаюсь это:</p><pre><code>myint = [myfloat integervalue]; </code></pre><p>но я получаю сообщение о том, что по сути integervalue не работает с плавающей точкой. </p><p>как мне это сделать?</p>

<p>я почти уверен, что синтаксис приведения в стиле c работает в objective c, поэтому попробуйте тоже:</p><pre><code>int myint = (int) myfloat; </code></pre><p>по крайней мере, это может заставить замолчать предупреждение компилятора.</p>

<p>что случилось с:</p><pre><code>int myint = myfloat; </code></pre><p>имейте в виду, что это будет использовать правило округления по умолчанию, которое приближается к нулю (т.е. -3.9f становится -3) </p>

<pre><code>int myint = (int) myfloat; </code></pre><p>работал нормально для меня. </p><pre><code>int myint = [[nsnumber numberwithfloat:myfloat] intvalue]; </code></pre><p>ну, это один из вариантов. если вам нравится объезд, я мог бы подумать о некоторых, использующих nsstring. почему легко, когда есть сложная альтернатива? :) </p>

<p>вы также можете использовать c's <code>lroundf(myfloat)</code>.</p><hr><p>невероятно полезный совет: в редакторе xcode введите свой код, как сказать</p><pre><code>myint = roundf(somefloat); </code></pre><p>затем управляйте/щелкните правой кнопкой мыши по <code>roundf</code> и<strong> перейдите к определению </strong>(или просто щелкните по команде).</p><p>после этого вы четко увидите<strong> очень длинный список доступных функций </strong>для вас. (невозможно запомнить их все, так что просто используйте этот трюк.)</p><p>например, в данном примере вполне вероятно, что <code>lrintf</code> - это то, что вам нужно.</p><p>еще один совет: получить документацию по этим функциям. в вашем terminal.app (или в любом shell - ничего общего с xcode,<strong> просто обычный terminal.app </strong>) просто введите <code>man lrintf</code>, и он даст вам полную информацию. надеюсь, это поможет кому-то.</p>

<p>в поддержку раскручивания помните, что objective-c является надмножеством c, а не совершенно новым языком.</p><p>все, что вы можете сделать в обычном старом ansi c, можно сделать в objective-c.</p>

<p>вот более краткий подход, который был введен в 2012 году:</p><pre><code>myint = @(myfloat).intvalue; </code></pre>