Java Herhangi Bir Sayıyı Yuvarlayın


149

Basit bir soruyla ilgili aradığım cevabı bulamıyorum: Herhangi bir sayıyı en yakınına intnasıl yuvarlayabilirim ?

Örneğin, sayı 0.2, 0.7, 0.2222, 0.4324, 0.99999 olduğunda, sonucun 1 olmasını isterim.

Şimdiye kadar sahibim

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

Yine de işi yapıyor gibi görünmüyor.


Örnek kodunuzda neden 100'e bölünüyorsunuz?
Jon Skeet

14
Bahse girerim atamsayı türünüzdür.
Nikita Rybak

1
evet haklısın a int ... bunu işaret ettiğiniz için teşekkürler. 100.0 benim için sıraladı.
Stevanicus

1
Sanırım ne istediği bir / 100 yuvarlanmış, ama evet, soru biraz açıklama gerektirebilir.
Jay

1
NOT: Bu soruya daha iyi cevaplar verilmektedir.
martijnn2008

Yanıtlar:


294

Math.ceil()aramak için doğru işlevdir. Ben tahmin ediyorum abir olduğunu intbulunması şeklinde, a / 100aritmetik tamsayı gerçekleştirin. Onun Math.ceil(a / 100.0)yerine deneyin .

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));

Çıktılar:

1
1.0
1.42
2.0
2

Bkz. Http://ideone.com/yhT0l


3
bu sadece "a" çift ise
L.Grillo

^^ "a" 'nın double veya double olması gerekir.
2017'de

1
aBir olan intbu örnekte, ve o kadar önerilen çalışır. int / floatSonuç yapılırken floatçıktıda gösterildiği gibi a olur . Bağlantıyı deneyin.
dantiston

17

Neden 100'e bölündüğünü bilmiyorum ama işte benim varsayımım int a;

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

veya

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

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

Bu mükemmel bir iş çıkarmış gibiydi. Her zaman çalıştı.


2

10 yıl sonra ama bu sorun beni hala yakaladı.

Yani bu benim için çok geç kalanların cevabı.

Bu çalışmıyor

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

Çünkü sonuç a / 100bir tam sayıdır ve yuvarlanır, böylece Math.ceil bu konuda hiçbir şey yapamaz.

Bununla yuvarlak işlemden kaçınmalısınız

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

Şimdi çalışıyor.


0

Bunu yapmanın en kolay yolu şudur: Bir şamandıra veya ikiye katlama alacaksınız ve onu en yakın yuvarlamaya dönüştürmesini isteyeceksiniz, sonra sadece System.out.println((int)Math.ceil(yourfloat)); mükemmel şekilde çalışacaktır.


-3

Bir çift olarak varsayarsak ve ondalık basamağı olmayan yuvarlatılmış bir sayıya ihtiyacımız var. Math.round () işlevini kullanın.
Bu benim çözümüm olarak gider.

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

Output : 
a:1

1
Bu yanlış bir cevaptır, çünkü burada a = 0,2 ise sonuç 0 olacaktır
Mohamed23gharbi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.