2010-03-30 45 views
1

我有一個情況,我得到一個NSDecimal,我需要一個NSInteger。我知道這是一個非常小的值(這是絕對確定的)。它不會大於100.所以將它投射到NSInteger將會非常好,不會發生溢出。如何將NSDecimal值轉換爲NSInteger值?

這怎麼辦? NSDecimal中只有一個-doubleValue方法。

+0

您是以「NSDecimal」還是「NSDecimalNumber」開頭的? 'NSDecimalNumber'有一個'-doubleValue'方法,但是'NSDecimal'沒有。 – kubi 2010-03-30 20:58:47

回答

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];