Как округлить 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];
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 для округления чисел.