Как мне округлить NSNumber до нуля десятичных пробелов - PullRequest
6 голосов
/ 02 августа 2010

Как округлить NSNumber до нуля десятичных пробелов, в следующей строке кажется, что он содержит десятичные пробелы:

NSNumber holidayNightCount = [NSNumber numberWithDouble:sHolidayDuration.value];

Ответы [ 5 ]

14 голосов
/ 02 августа 2010

Обычно приведение к усечению int. Например, 3,4 становится 3 (как желательно), но 3,9 также становится 3. Если это произойдет, добавьте 0.5 перед кастом

int myInt = (int)(sHolidayDuration.value + 0.5);
12 голосов
/ 13 сентября 2011

Вот немного затянувшийся подход

float test = 1.9;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp];
[formatter setMaximumFractionDigits:0];
NSLog(@"%@",[formatter  stringFromNumber:[NSNumber numberWithFloat:test]]);
[formatter release];
3 голосов
/ 02 августа 2010

Если вам нужно только целое число, почему бы просто не использовать int

int holidayNightCount = (int)sHolidayDuration.value;

По определению int не имеет десятичных разрядов

Если вам нужно использовать NSNumber, вы можете просто привести Double к Int, а затем использовать int для создания NSNumber.

int myInt = (int)sHolidayDuration.value;
NSNumber holidayNightCount = [NSNumber numberWithInt:myInt];
1 голос
/ 20 июля 2013

вы также можете сделать следующее: int roundedRating = (int) round (rating.floatValue);

0 голосов
/ 28 августа 2014

Этаж число с помощью старой функции C floor (), а затем вы можете создать NSInteger, который более подходит, смотрите: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/floor.3.html ....

NSInteger holidayNightCount = [NSNumber numberWithInteger:floor(sHolidayDuration.value)].integerValue;

Дополнительная информация по теме здесь: http://eureka.ykyuen.info/2010/07/19/objective-c-rounding-float-numbers/

Или вы можете использовать функции NSDecimalNumber для округления чисел.

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