Java Kumpulkan Nomor Apapun


146

Sepertinya saya tidak dapat menemukan jawaban yang saya cari mengenai pertanyaan sederhana: bagaimana cara mengumpulkan angka ke yang terdekat int?

Misalnya, setiap kali angkanya 0,2, 0,7, 0,2222, 0,4324, 0,99999 saya ingin hasilnya menjadi 1.

Sejauh ini saya punya

int b = (int) Math.ceil(a / 100);

Tampaknya tidak melakukan pekerjaan itu.


Mengapa Anda membaginya dengan 100 dalam kode sampel Anda?
Jon Skeet

14
Saya yakin Anda amemiliki tipe integer.
Nikita Rybak

1
ya benar a adalah int ... terima kasih telah menunjukkan itu. 100.0 mengurutkannya untukku.
Stevanicus

1
Saya kira yang dia inginkan adalah angka 100, tetapi ya, pertanyaannya bisa menggunakan beberapa klarifikasi.
Jay

1
CATATAN: Pada ini pertanyaan jawaban yang lebih baik disediakan.
martijnn2008

Jawaban:


289

Math.ceil()adalah fungsi yang benar untuk dipanggil. Saya menduga aadalah int, yang akan membuat a / 100melakukan bilangan aritmatika. Coba Math.ceil(a / 100.0)saja.

int a = 142;
System.out.println(a / 100);
System.out.println(Math.ceil(a / 100));
System.out.println(a / 100.0);
System.out.println(Math.ceil(a / 100.0));
System.out.println((int) Math.ceil(a / 100.0));

Output:

1
1.0
1.42
2.0
2

Lihat http://ideone.com/yhT0l


3
ini hanya jika "a" dua kali lipat
L.Grillo

^^ "a" harus ganda atau ganda.
Codeversed

1
aadalah intdalam contoh ini, dan berfungsi seperti yang disarankan. Ketika melakukan int / floathasilnya adalah float, seperti yang ditunjukkan dalam output. Coba tautannya.
dantiston

16

Saya tidak tahu mengapa Anda membagi 100 tetapi di sini asumsi saya int a;

int b = (int) Math.ceil( ((double)a) / 100);

atau

int b = (int) Math.ceil( a / 100.0);

11
int RoundedUp = (int) Math.ceil(RandomReal);

Ini sepertinya melakukan pekerjaan yang sempurna. Bekerja setiap saat.


2

10 tahun kemudian, tetapi masalah itu masih menyita perhatian saya.

Jadi ini adalah jawaban untuk mereka yang terlambat seperti saya.

Ini tidak bekerja

int b = (int) Math.ceil(a / 100);

Penyebab hasilnya a / 100 ternyata bilangan bulat dan bulat sehingga Math.ceil tidak bisa berbuat apa-apa.

Anda harus menghindari operasi bulat dengan ini

int b = (int) Math.ceil((float) a / 100);

Sekarang berhasil.


0

Cara termudah untuk melakukan ini adalah hanya: Anda akan menerima pelampung atau dobel dan ingin itu dikonversi ke putaran terdekat kemudian lakukan saja System.out.println((int)Math.ceil(yourfloat)); itu akan bekerja dengan sempurna


-3

Dengan asumsi dua kali lipat dan kita perlu angka bulat tanpa tempat desimal. Gunakan fungsi Math.round ().
Ini berjalan sebagai solusi saya.

double a = 0.99999;
int rounded_a = (int)Math.round(a);
System.out.println("a:"+rounded_a );

Output : 
a:1

1
Ini adalah jawaban yang salah, seperti yang diminta di sini untuk mengumpulkan jika a = 0,2 hasilnya akan 0
Mohamed23gharbi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.