Saya menggunakan baris berikut untuk mengonversi float ke int, tetapi tidak seakurat yang saya inginkan:
float a=8.61f;
int b;
b=(int)a;
Hasilnya adalah: 8
(Seharusnya 9
)
Kapan a = -7.65f
, hasilnya adalah: -7
(Seharusnya -8
)
Apa cara terbaik untuk melakukannya?
java
floating-point
int
jujur
sumber
sumber
Jawaban:
Menggunakan
Math.round()
akan mengitari float ke integer terdekat.sumber
Math.round()
mengembalikanint
nilai sehingga penggunaan typecasting(int)
berlebihan.(int)foo
lebih sederhana.Sebenarnya, ada beberapa cara untuk menurunkan float ke int, tergantung pada hasil yang ingin Anda capai: (untuk int
i
, floatf
)round (bilangan bulat terdekat dengan float yang diberikan)
catatan: ini, berdasarkan kontrak, sama dengan
(int) Math.floor(f + 0.5f)
truncate (mis. jatuhkan semuanya setelah titik desimal)
ceil / floor (bilangan bulat selalu lebih besar / lebih kecil dari nilai yang diberikan jika memiliki bagian fraksional)
Untuk membulatkan nilai - nilai positif , Anda juga bisa menggunakan
(int)(f + 0.5)
, yang berfungsi persis sepertiMath.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.
sumber
Math.round(value)
bulatkan nilainya ke bilangan bulat terdekat.Menggunakan
sumber
Math.round juga mengembalikan nilai integer, jadi Anda tidak perlu mengetik typecast.
sumber
Gunakan
Math.round(value)
kemudian setelah mengetikkan ke integer.sumber
Bagi saya, lebih mudah: (int) (a +.5) // a adalah Float. Kembalikan nilai bulat.
Tidak tergantung pada tipe Java Math.round ()
sumber
-(int) ( PI / 3 )
: coba kode Anda dengan negatifa
... sejak kapan-0.5
sampai0
?