NSDecimalNumber 类型的 ceilf 和 floorf 是否有等效的方法?我似乎找不到任何东西。
问问题
1392 次
1 回答
7
简单的解决方案:您可以获取数字对象的浮点值并调用ceilf()
or 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
于 2010-05-07T12:42:47.580 回答