NSDecimalNumber 类型的 ceilf 和 Floorf 是否有等效方法?我好像没找到。
最佳答案
简单的解决方案:您可以获取数字对象的浮点值并调用ceilf()
或floorf()
:
ceilf([decimalNumber floatValue]);
否则,您可以使用-decimalNumberByRoundingAccordingToBehavior:
方法。
首先,您需要为要使用的每种舍入模式实现 NSDecimalNumberBehaviors
协议(protocol):
@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
关于cocoa - NSDecimalNumber 的 ceilf 和 Floorf 等效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787724/