1

NSDecimalNumber 型の ceilf と floorf に同等のメソッドはありますか? 見つけられなかったようです。

4

1 に答える 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 に答える