NSDecimalNumber 型の ceilf と floorf に同等のメソッドはありますか? 見つけられなかったようです。
1392 次
1 に答える
7
簡単な解決策:numberオブジェクトのfloat値を取得して、ceilf()
またはfloorf()
:を呼び出すことができます。
ceilf([decimalNumber floatValue]);
それ以外の場合は、この– decimalNumberByRoundingAccordingToBehavior:
メソッドを使用できます。
NSDecimalNumberBehaviors
まず、使用する丸めモードごとにプロトコルを実装する必要があります。
@interface DecimalRounder : NSObject <NSDecimalNumberBehaviors> { }
@end
@implementation DecimalRounder
- (NSRoundingMode)roundingMode {
return NSRoundUp;
}
- (short)scale {
return 0;
}
@end
そして(10進数が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 に答える