Получить целую часть числа с плавающей точкой: Objective-C - PullRequest
4 голосов
/ 23 октября 2011

Итак, у меня есть

число с плавающей запятой x = x + 0,25;

Это число будет вызываться каждый раз, когда происходит щелчок

NSLog (@ "% F", х);

Я хочу, чтобы nslog возвращал только целую часть, вот так

  x        return        

 1.25         1
 1.50         1
 3.25         3
 4.75         4

Есть идеи?

Ответы [ 2 ]

12 голосов
/ 23 октября 2011

Преобразование в int не будет работать, если число с плавающей запятой выходит за пределы диапазона int.

Печать с "%.0f" не усекается, она округляется, поэтому 4,75 напечатаетas 5.

Если ваш компилятор (точнее, библиотека времени выполнения) поддерживает их, функции trunc(), truncf() и truncl(), объявленные в <math.h>, делают именно то, что выwant:

printf("%.0f\n", trunc(x));

Эти функции являются новыми в C99, поэтому возможно, что ваш компилятор их не поддерживает.C90 обеспечивает floor() функцию;Вы можете использовать это, если напишите какой-нибудь специальный код для отрицательных чисел.

4 голосов
/ 23 октября 2011

Вы можете рассматривать x как int (приведение):

NSLog("%d", (int)x);

Примечание: это не будет округлять, оно будет усекать значение, возвращая только целую часть.

РЕДАКТИРОВАТЬ: обратите внимание, что это не безопасный способ обрезать все возможные значения с плавающей запятой, хотя он будет хорошо работать для небольших значений (те, которые соответствуют int).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...