rei*_*ein 1 cocoa cocoa-touch nsdecimalnumber
对于NSDecimalNumber类型,ceilf和floorf是否有等效的方法?我似乎找不到任何东西.
简单的解决方案:您可以获取数字对象的浮点值并调用ceilf()或floorf():
ceilf([decimalNumber floatValue]);
Run Code Online (Sandbox Code Playgroud)
否则,您可以使用该– decimalNumberByRoundingAccordingToBehavior:方法.
首先,您需要为NSDecimalNumberBehaviors要使用的每种舍入模式实现协议:
@interface DecimalRounder : NSObject <NSDecimalNumberBehaviors> { }
@end
@implementation DecimalRounder
- (NSRoundingMode)roundingMode {
return NSRoundUp;
}
- (short)scale {
return 0;
}
@end
Run Code Online (Sandbox Code Playgroud)
然后(假设你的十进制数是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);
Run Code Online (Sandbox Code Playgroud)
你会得到:
decimalNumber: 12.5
roundedNumber: 13
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |