NSDecimalNumber类型的ceilf和floorf是否有等价的方法?我似乎找不到任何东西。
答案 0 :(得分:7)
简单解决方案:您可以获取数字对象的浮点值并调用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