Sebenarnya, ada beberapa cara untuk menurunkan float ke int, tergantung pada hasil yang ingin Anda capai: (untuk int i
, float f
)
round (bilangan bulat terdekat dengan float yang diberikan)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
catatan: ini, berdasarkan kontrak, sama dengan (int) Math.floor(f + 0.5f)
truncate (mis. jatuhkan semuanya setelah titik desimal)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
ceil / floor (bilangan bulat selalu lebih besar / lebih kecil dari nilai yang diberikan jika memiliki bagian fraksional)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
Untuk membulatkan nilai - nilai positif , Anda juga bisa menggunakan (int)(f + 0.5)
, yang berfungsi persis seperti Math.Round
dalam kasus tersebut (sesuai dok).
Anda juga dapat menggunakan Math.rint(f)
untuk melakukan pembulatan ke bilangan bulat genap terdekat ; itu bisa dibilang berguna jika Anda berharap untuk berurusan dengan banyak pelampung dengan bagian fraksional sama dengan 0,5 (perhatikan kemungkinan masalah pembulatan IEEE), dan ingin mempertahankan rata-rata set di tempat; Anda akan memperkenalkan bias lain, di mana angka genap akan lebih umum daripada aneh.
Lihat
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
untuk informasi lebih lanjut dan beberapa contoh.