2010-05-07 3 views

답변

7

간단한 해결 방법 : 숫자 객체의 float 값을 얻을 ceilf() 또는 floorf() 호출 할 수 있습니다 : 그렇지 않으면, 당신은 – decimalNumberByRoundingAccordingToBehavior: 방법을 사용할 수 있습니다

ceilf([decimalNumber floatValue]); 

합니다.

먼저 사용하려는 각 반올림 모드에 대한 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 
+2

float (또는 double) 변환이 pr을 잃어 버리기 때문에 두 번째 옵션을 사용했습니다. ecision. – rein

관련 문제