Как округлить NSNumber до нуля десятичных разрядов

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

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

5 ответов


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

int holidayNightCount = (int)sHolidayDuration.value;

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

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

int myInt = (int)sHolidayDuration.value;
NSNumber holidayNightCount = [NSNumber numberWithInt:myInt];

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

int myInt = (int)(sHolidayDuration.value + 0.5);

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

float test = 1.9;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp];
[formatter setMaximumFractionDigits:0];
NSLog(@"%@",[formatter  stringFromNumber:[NSNumber numberWithFloat:test]]);
[formatter release];

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


Floor номер, используя старую функцию 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 для округления чисел.