Java.lang.Math

Olá pessoal, estou estudando para certificação e estou enfrentando problemas com

Math.round: se for menor que 0.5 será tratado como floor e se for maior ou igual a 0.5, como ceil.
Math.ceil: arredonda para o inteiro superior
Math.floor: arredonda para o inteiro inferior

Porque Math.round(-2.8) = -3

Eu li alguma coisa não sei ao certo que ele trabalha com módulos… tem alguma coisa a ver com trabalhar só com números positivos acho… a muito tempo tive um problema para implementas esse metodo para ME. Acho que é isso

o metodo faz o arredondamento do numero inteiro e depios o torna negativo.
round(-2.8) = -1 * round(2.8)

O round arredonda para o inteiro mais proximo, no caso o inteiro mais proximo de -2,8 é -3…

E o round() sempre usa floor(), o que ele faz é somar 0.5 no valor, depois arredonda pra baixo…

ex.:

double n = -2.8; n += 0.5; long l = Math.floor(n);

Veja o codigo do metodo:

public static double floor(double a) { return StrictMath.floor(a); // default impl. delegates to StrictMath }