2016-09-27 26 views
14

tôi đã cố gắng để chuyển đổi số thập phân để int với mã sau:Swift 3: Decimal để int

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

Nhưng tôi nhận được:

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

Ở đây tôi biết pow đang trở lại một Decimal nhưng có vẻ như Int không có hàm tạo và hàm thành viên để chuyển đổi Decimal thành Int.
Làm cách nào để chuyển đổi Thập phân sang Int trong Swift 3?

+0

Sử dụng số thập phân chỉ cho các giá trị tiền tệ. Ngoại trừ việc sử dụng đôi hoặc nổi. –

+2

'NSDecimalNumber (thập phân: yourDecimal) .intValue' sẽ hoạt động. –

+0

Tại sao bạn nói 'Decimal (size)' để bắt đầu? – matt

Trả lời

17

Đây là câu trả lời được cập nhật của tôi (nhờ Martin R và OP cho nhận xét). Vấn đề của OP chỉ là đúc hàm pow(x: Decimal,y: Int) -> Decimal cho một Int sau khi trừ đi 1 từ kết quả. Tôi đã trả lời câu hỏi với sự trợ giúp của số SO post for NSDecimalApple's documentation on Decimal này. Bạn phải chuyển đổi kết quả của bạn đến một NSDecimalNumber, có thể lần lượt được đúc thành một 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

Tôi chỉ muốn biết cách chuyển đổi Thập phân thành Int, tiếc là bạn đã hiểu sai mục tiêu của mình. –

+2

Có * là * một hàm 'pow (_ x: Thập phân, _ y: Int) -> Thập phân '. –

+0

Tuyệt vời! Điều đó hoạt động! –

0
let decimalToInt = (yourDecimal as NSDecimalNumber).intValue 

hoặc như @MartinR gợi ý:

let decimalToInt = NSDecimalNumber(decimal: yourDecimal).intValue