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
}