Округление чисел в Objective-C - PullRequest
       44

Округление чисел в Objective-C

74 голосов
/ 15 апреля 2009

Я пытаюсь сделать некоторое округление числа и преобразование в строку, чтобы улучшить вывод в программе Objective-C.

У меня есть значение с плавающей точкой, которое я хотел бы округлить до ближайшего значения .5, а затем использовать его для установки текста на метке.

Например:

1.4 будет строкой: 1,5

1.2 будет строкой: 1

0.2 будет строкой: 0

Я потратил время на поиски ответа в Google, но, будучи новичком в Objective-C, я не уверен, что искать! Так что я бы очень оценил указатель в правильном направлении!

Спасибо, Ash

Ответы [ 11 ]

0 голосов
/ 15 апреля 2015

Мне нужно было иметь возможность округлить до определенной цифры (не обязательно до целых чисел). Я сделал категорию NSNumber (основываясь на ответе Эша ) и добавил к ней следующий метод:

- (NSString *)stringByRounding:(NSNumberFormatterRoundingMode)roundingMode
      toPositionRightOfDecimal:(NSUInteger)position
{
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setMaximumFractionDigits:position];
    [formatter setRoundingMode:roundingMode];
    NSString *numberString = [formatter stringFromNumber:self];
    return numberString;
}

Что позволяет мне использовать его так:

[aNumber stringByRounding:NSNumberFormatterRoundUp toPositionRightOfDecimal:2];

Я могу использовать его для округления до целых чисел, передав 0 в качестве второго параметра:

[aNumber stringByRounding:NSNumberFormatterRoundPlain toPositionRightOfDecimal:0];
...