2010-03-30 9 views
1

나는 NSDecimal을 얻는 상황이 있으며 NSInteger가 필요하다. 나는 이것이 아주 작은 값이라는 것을 안다. (이것은 절대적으로 확실하다). 100보다 클 수 없습니다. 따라서 NSInteger로 변환하면 완벽하게 오버 플로우가 발생하지 않습니다.NSDecimal 값을 NSInteger 값으로 변환하는 방법은 무엇입니까?

어떻게이 작업을 수행 할 수 있습니까? NSDecimal에는 -doubleValue 메서드가 있습니다.

+0

NSDecimal 또는 NSDecimalNumber로 시작 하시겠습니까? 'NSDecimalNumber'는'-doubleValue' 메쏘드를 가지고 있지만'NSDecimal' 메쏘드는하지 않습니다. – kubi

답변

12

먼저 NSDecimalNumber로 변환하십시오. NSDecimalNumber는 NSNumber의 서브 클래스이므로 모든 NSNumber 메서드를 사용할 수 있습니다.

NSDecimalNumber *myNSDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:myNSDecimal]; 
NSInteger myInt = [myNSDecimalNumber intValue]; 
1

당신은 항상 doubleValue (나는 당신이 NSDecimalNumber를 가졌다 고 가정하고 있음)를 잡고 int로 타입 변환 할 수 있습니다.

4

NSDecimalNumber Class Reference을 살펴보십시오. NSDecimal에서 NSDecimalNumber을 만든 다음 intValue으로 전화하십시오.

NSDecimalNumber * decNum = [NSDecimalNumber decimalNumberWithDecimal:yourDecimal]; 

int yourInt = [decNum intValue]; 
관련 문제