Di Jawa, saya ingin mengkonversi ganda untuk integer, aku tahu jika anda melakukan hal ini:
double x = 1.5;
int y = (int)x;
anda mendapatkan y=1. Jika anda melakukan hal ini:
int y = (int)Math.round(x);
Anda'll kemungkinan akan mendapatkan 2. Namun, saya bertanya-tanya: sejak ganda representasi bilangan bulat kadang-kadang terlihat seperti 1.9999999998 atau sesuatu, ada kemungkinan bahwa casting ganda yang dibuat melalui Matematika.round() masih akan mengakibatkan terpotong bawah nomor, bukan bulat nomor yang kita cari (yaitu: 1, bukan 2 dalam kode yang diwakili) ?
(dan ya, aku tidak bermaksud seperti itu: ada ada nilai untuk x, dimana y akan menunjukkan hasil yang terpotong bukan bulat representasi dari x?)
Jika demikian: Apakah ada cara yang lebih baik untuk membuat ganda menjadi bulat int tanpa menjalankan risiko pemotongan?
Menemukan sesuatu: Matematika.round(x) mengembalikan panjang, tidak ganda. Oleh karena itu: itu adalah mustahil untuk Matematika.round() untuk mengembalikan nomor tampak seperti 3.9999998. Oleh karena itu, int(Matematika.round()) tidak akan pernah perlu untuk memotong apa-apa dan akan selalu bekerja.
apakah ada kemungkinan bahwa casting ganda yang dibuat melalui
Matematika.round()
masih akan mengakibatkan terpotong bawah nomor
Tidak, bulat()
akan selalu bulat double untuk nilai yang benar, dan kemudian, ia akan dilemparkan ke sebuah lama
yang akan memotong setiap tempat desimal. Tapi setelah pembulatan, tidak akan menjadi pecahan bagian yang tersisa.
Berikut ini adalah dokumentasi dari Matematika.round(double)
:
Kembali terdekat panjang untuk argumen. Hasilnya dibulatkan ke integer dengan menambahkan 1/2, mengambil lantai hasil, dan pengecoran hasil untuk tipe lama. Dengan kata lain, hasilnya adalah sama dengan nilai dari ungkapan:
(panjang)Matematika.lantai(a + 0,5 d)
Double perValue = 96.57;
int roundVal= (int) Math.round(perValue);
Soal tujuan saya.