2012-06-14 13 views
9

Java numaralı telefondan float numaralı telefonu int numaralı telefona çevirmek istiyorum.
Örneğin,Java'da neden tavan (şamandıra) yok?

roundUp(0.2) = 1 
roundUp(0.7) = 1 
roundUp(1.3) = 2 
... 

Bunu yapmaya Math.ceil ve Math.round çağırmak istiyorum ama ceil(float)java.lang.Math sağlamaz. Sadece ceil(double) sağlar. Yani benim floatdouble sunulduktan sessizce, ceil(double) döner double ve round(double) döner long Ben floatint (değil long) yuvarlamak gerekir iken.

Şimdi neden java.lang.Math'un yalnızca ceil(double)'a sahip olduğunu ve ceil(float) ürününe sahip olmadığını merak ediyorum.

+3

Bazı küçük eğlencelerle, örneklerinizdeki sayıların, yüzdelik değil, iki katına çıktığını görüyorum! –

cevap

15

Sen yapabilirsiniz:

value = (int) Math.ceil(value); 

Eğer value o zaman float veya int geri sonucunu döküm bir şamandıra olduğunu biliyorsanız

. Java kütüphanesi aynı sonucu ceil(double) yönteme geçirilebilir tüm şamandıra bağımsız değişkenleri olarak hem ceil(float) ve ceil(double) sağlamak için

Hiç mantıklı.

+1

+1 veya 'int intValue = (int) Math.ceil (değer); –

+0

@PeterLawrey: teşekkürler, soru gerçekten bir" int "elde etmek olduğu gibi cevabı güncelleştirdim. –

+0

Dökümlerden kaçınmak istiyorum. Güvende görünmüyor. – Michael