Saya ingin mengonversi Float
ke Int
dalam Swift. Pengecoran dasar seperti ini tidak berfungsi karena tipe ini bukan primitif, tidak seperti float
s dan int
s di Objective-C
var float: Float = 2.2
var integer: Int = float as Float
Tetapi ini menghasilkan pesan kesalahan berikut:
'Float' tidak dapat dikonversi menjadi 'Int'
Adakah yang tahu cara konversi properti dari Float
menjadi Int
?
as
operator adalah untuk turun-casting untuk subclass. yaitu:UIView as UIButton
Jawaban:
Anda dapat mengonversi
Float
keInt
dalam Swift seperti ini:Anda juga dapat mencapai hasil ini dengan komentar @ paulm:
sumber
var myIntValue = Int(myFloatValue)
bekerja.Konversi Eksplisit
Konversi ke Int akan kehilangan presisi apa pun (pembulatan efektif). Dengan mengakses perpustakaan matematika Anda dapat melakukan konversi eksplisit. Sebagai contoh:
Jika Anda ingin membulatkan dan mengkonversi ke integer:
hasilnya adalah 10.
Jika Anda ingin mengumpulkan dan mengubahnya menjadi integer:
hasilnya 11.
Jika Anda ingin membulatkan secara eksplisit ke bilangan bulat terdekat
hasilnya 11.
Dalam kasus yang terakhir, ini mungkin terlihat sangat bagus, tetapi secara semantik lebih jelas karena tidak ada konversi tersirat ... penting jika Anda melakukan pemrosesan sinyal misalnya.
sumber
round(10.5) == 11.0
Konversi itu sederhana:
Tapi itu tidak aman:
Akan karena kecelakaan yang bagus:
Jadi saya telah membuat ekstensi yang menangani overflow:
Saya harap ini bisa membantu seseorang
sumber
Ada banyak cara untuk membulatkan angka dengan presisi. Anda akhirnya harus menggunakan metode perpustakaan standar swift
rounded()
untuk membulatkan angka float dengan presisi yang diinginkan.Untuk putaran up penggunaan
.up
aturan:Untuk putaran bawah penggunaan
.down
aturan:Untuk membulatkan ke aturan penggunaan integer terdekat
.toNearestOrEven
:Waspadai contoh berikut:
sumber
Seperti ini:
sumber
Anda bisa mendapatkan representasi integer float Anda dengan meneruskan float ke metode initializer Integer.
Contoh:
Perlu diingat, bahwa angka apa pun setelah titik desimal akan hilang. Artinya, 3,9 adalah Int dari 3 dan 8,99999 adalah bilangan bulat dari 8.
sumber
Gunakan konversi gaya fungsi (ditemukan di bagian berlabel "Integer dan Floating-Point Conversion" dari " The Swift Programming Language. " [Tautan iTunes])
sumber
Anda dapat mengetikkan cor seperti ini:
sumber
Cukup gunakan tipe casting
itu akan menunjukkan nilai pembulatan misalnya: IntegerValue = 5 berarti titik desimal akan hilang
sumber
sumber
Ini cukup untuk mengkonversi dari
float
menjadiInt
sumber
Misalkan Anda menyimpan nilai float
"X"
dan Anda menyimpan nilai integer di"Y"
.atau
sumber
Gunakan
Int64
sebagai gantiInt
.Int64
dapat menyimpan nilai int yang besar.sumber
Float
memiliki rentang nilai yang lebih besar dariInt
?