2016-09-27 42 views
14

我試圖轉換十進制與後續的代碼INT:斯威夫特3:十進制轉換爲INT

Int(pow(Decimal(size), 2) - 1) 

,但我得到:

.swift:254:43: Cannot invoke initializer for type 'Int' with an argument list of type '(Decimal)' 

在這裏,我知道戰俘返回一個Decimal但似乎該Int沒有構造函數和成員函數來將Decimal轉換爲Int
如何在Swift 3中將Decimal轉換爲Int?

+0

使用十進制只爲貨幣值。除了使用double或float。 –

+2

'NSDecimalNumber(十進制:yourDecimal).intValue'應該可以工作。 –

+0

你爲什麼說'十進制(大小)'開始? – matt

回答

17

這是我更新的答案(感謝Martin R和OP的評論)。 OP的問題是將pow(x: Decimal,y: Int) -> Decimal函數從結果中減去1後,將其轉換爲Int。我在這個SO post for NSDecimalApple's documentation on Decimal的幫助下回答了這個問題。你有你的結果轉換爲NSDecimalNumber,這又可以被鑄造成一個Int:

let size = Decimal(2) 
let test = pow(size, 2) - 1 
let result = NSDecimalNumber(decimal: test) 
print(Int(result)) // testing the cast to Int 
+1

我只是想知道如何將Decimal轉換爲Int,不幸的是您誤解了我的目標。 –

+2

*有* pow(_ x:Decimal,_ y:Int) - > Decimal'函數。 –

+0

太棒了!這樣可行! –

0
let decimalToInt = (yourDecimal as NSDecimalNumber).intValue 

或@MartinR建議:

let decimalToInt = NSDecimalNumber(decimal: yourDecimal).intValue