DEV Community

Cover image for Math.ceil vs Math.floor
doug-source
doug-source

Posted on

Math.ceil vs Math.floor

Volta e meia me deparo com chamadas dos métodos ceil e floor, pertencentes à Math. Ambos os métodos possuem a finalidade de arredondamento de um floating point number para um integer number. Porém, uma pergunta que sempre me surge, quase que de forma automática, é:

Afinal, existiria alguma forma de comparar visualmente a lógica dessas duas functions?

Bom... Deixe-me tentar.

Imaginemos que exista um gráfico no qual possamos colocar cada argumento passado para essas functions:

graph1

Math.ceil(num)

Tem a função de arredondar um número para o valor inteiro mais próximo, maior ou igual (>=) ao número atual.

num === 1.3

graph2

Olhando o número inserido no gráfico acima, qual seria o número inteiro mais próximo >= à 1.3? O número 2, é claro!

num === -2.001

graph3

Olhando o número inserido no gráfico acima, qual seria o número inteiro mais próximo >= à -2.001? Como estamos agora perante uma escala negativa, o próximo número inteiro >= é -2.

Math.floor(num)

Tem a função de arredondar um número para o valor inteiro mais próximo, menor ou igual (<=) ao número atual. Resumidamente funciona igual à Math.ceil, porém com sentido inverso no gráfico.

num === 1.3

graph2

Olhando o número inserido no gráfico acima, qual seria o número inteiro mais próximo <= à 1.3? O número 1, é claro!

num === -2.001

graph3

Olhando o número inserido no gráfico acima, qual seria o número inteiro mais próximo <= à -2.001? Como estamos agora perante uma escala negativa, o próximo número inteiro <= é -3.

Assim, analizando o sentido do arredondamento dessas functions e levando o gráfico em consideração, temos:

graph4

Lembrar de conceitos utilizando imagens (como a mencionada acima) costuma me auxiliar bastante na fixação deles. 😉​

...

Top comments (0)