Простое решение: Вы можете получить значение с плавающей запятой для числового объекта и вызвать ceilf()
или floorf()
:
ceilf([decimalNumber floatValue]);
В противном случае вы можете использовать метод – decimalNumberByRoundingAccordingToBehavior:
.
Сначала вам нужно будет реализовать протокол NSDecimalNumberBehaviors
для каждого режима округления, который вы хотите использовать:
@interface DecimalRounder : NSObject <NSDecimalNumberBehaviors> { }
@end
@implementation DecimalRounder
- (NSRoundingMode)roundingMode {
return NSRoundUp;
}
- (short)scale {
return 0;
}
@end
А затем (при условии, что ваше десятичное число равно 12,5):
DecimalRounder *rounder = [[DecimalRounder alloc] init];
NSDecimalNumber *decimalNumber = [[NSDecimalNumber alloc] initWithFloat:12.5];
NSDecimalNumber *roundedNumber = [decimalNumber decimalNumberByRoundingAccordingToBehavior:rounder];
NSLog(@"decimalNumber: %@", decimalNumber);
NSLog(@"roundedNumber: %@", roundedNumber);
Вы получите:
decimalNumber: 12.5
roundedNumber: 13