Подтвердить что ты не робот

Objective-C Округление по плавающей позиции

Как я могу объединить float с ближайшим целым числом в Objective-C:

Пример:

float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);

должен печатать "округленный поплавок 46"

4b9b3361

Ответ 1

Рекомендуемый способ в этом ответе: fooobar.com/questions/142197/...


Оригинальный ответ:

передайте его в int после добавления 0.5.

Итак,

NSLog (@"the rounded float is %i", (int) (f + 0.5));

Изменить: способ, которым вы просили:

int rounded = (f + 0.5);


NSLog (@"the rounded float is %i", rounded);

Ответ 2

Используйте семейство стандартных функций C round(). roundf() для float, round() для double и roundl() для long double. Затем вы можете применить результат к целочисленному типу по вашему выбору.

Ответ 3

Самый простой способ объединить float в objective-c - lroundf:

float yourFloat = 3.14;
int roundedFloat = lroundf(yourFloat); 
NSLog(@"%d",roundedFloat);

Ответ 4

Проверьте страницу руководства для rint()

Ответ 5

Если в случае, если вы хотите, чтобы значение round float в целочисленном ниже было простым методом округления значения float в объекте C.

int roundedValue = roundf(Your float value);

Ответ 6

Для раунда float до ближайшего целого используйте roundf()

roundf(3.2) // 3
roundf(3.6) // 4

Вы также можете использовать функцию ceil(), чтобы всегда получать верхнее значение от float.

ceil(3.2) // 4
ceil(3.6) // 4

И для самого низкого значения floor()

floorf(3.2) //3
floorf(3.6) //3

Ответ 7

    //Your Number to Round (can be predefined or whatever you need it to be)
    float numberToRound = 1.12345;

    float min = ([ [[NSString alloc]initWithFormat:@"%.0f",numberToRound] floatValue]);
    float max = min + 1;
    float maxdif = max - numberToRound;
    if (maxdif > .5) {
        numberToRound = min;
    }else{
        numberToRound = max;
    }

    //numberToRound will now equal it closest whole number (in this case, it 1)