Math.ceil(5.2)
numaralı telefonu aradığımda, double
6.0
dönüşüdür. Benim doğal eğilimim Math.ceil(double a)
'un long
döndüreceğini düşünmekti.Math.ceil neden bir çift döndürüyor?
Ama neden bir
ceil(double a)
argüman daha az olmayan ve matematiksel tam sayıya eşit olan en küçük (negatif sonsuza yakın)
double
değeri İade belgelerine.
double
ziyade sonuç bir tamsayı olduğunda
long
bir daha dönmek? Bunun sebebini anlamak, Java'yı biraz daha iyi anlamama yardımcı olabilir. Aynı zamanda,
long
, mesela bir
long
adresine göndererek sorun yaşayacağımı anlamaya da yardımcı olabilir. Ben olması gereken ne düşündüğünü hep
long b = (long)Math.ceil(a);
mı? Korkarım ki sorunlu bazı sınır durumları olabilir.
Bkz. Http://stackoverflow.com/questions/3412449/why-does-math-round-return-a-long-but-math-floor-return-a-double – starblue