Quando chiamo Math.ceil(5.2)
il ritorno è double
6.0
. La mia naturale inclinazione era pensare che Math.ceil(double a)
restituisse un long
. Dalla documentazione:Perché Math.ceil restituisce un doppio?
ceil(double a)
Restituisce il più piccolo (più vicino a infinito negativo)
double
valore che non sia inferiore l'argomento ed è pari ad una matematica intero.
Ma perché restituire un double
piuttosto che un long
quando il risultato è un numero intero? Penso che comprenderne la ragione potrebbe aiutarmi a capire un po 'meglio Java. Potrebbe anche aiutarmi a capire se mi metterò nei guai trasmettendo a long
, ad es. è
long b = (long)Math.ceil(a);
sempre quello che penso dovrebbe essere? Temo che potrebbero esserci dei casi limite che sono problematici.
Vedere http://stackoverflow.com/questions/3412449/why-does-math-round-return-a-long-but-math-floor-return-a-double – starblue