Arredondamento para baixo ou para cima, arredondamento matemático e truncamento
Vez ou outra precisa-se obter valores inteiros a partir de números reais provenientes de outras operações. Cálculo de datas, por exemplo, caso a linguagem não disponibilize funções dedicadas, o programador pode criar códigos específicos que implementam os respectivos algoritmos. Transformações geométricas envolvendo imagens e sistemas de coordenadas, conversões de formato etc. são apenas alguns dos diversos outros exemplos.
Em se tratanto desses operadores de arredondamento/truncamento, determinadas linguagens de programação já dispõem de funções para realizar esta extração a partir do argumento fornecido. Deve-se atentar ao funcionamento de cada um dos diferentes operadores disponibilizados pela linguagem. Na tabela seguinte estão alguns exemplos obtidos de [1]. São referentes à linguagem LISP. Surpreenda-se!
Argumento floor ceiling truncate round
>>===================================<<
2.9 2 3 2 3
2.5 2 3 2 2
2.1 2 3 2 2
0.9 0 1 0 1
0.1 0 1 0 0
-0.1 -1 0 0 0
-0.9 -1 0 0 -1
-2.1 -3 -2 -2 -2
-2.5 -3 -2 -2 -2
-2.9 -3 -2 -2 -3
>>===================================<<
Fonte: Adaptado de Manzano (2019, pg. 57)
Na tabela anterior nota-se claramente que o funcionamento da função (para a linguagem LISP) muda quando o argumento é positivo ou negativo, se está mais próximo da borda do inteiro ou acima/abaixo de n,5. Entender esses detalhes bem como tê-los em mente quando empregando tais operadores em seus códigos, evita-se algumas surpresas.
Cada linguagem de programação tem suas especificidades e as dúvidas podem ser resolvidas recorrendo ao manual oficial da linguagem ou implementando um pequeno código para avaliação.
Por incrível que pareça, no Brasil há uma norma que trata a respeito das Regras de arredondamento na numeração decimal: A NBR5891 de 12/2014.
Referências
[1] MANZANO, José Augusto Navarro Garcia. Linguagem LISP: primeiros passos com Common LISP (CL). São Paulo: Propes Vivens, 2019. 232 p. (978-85-923720-6-4). Disponível em: https://github.com/J-AugustoManzano/livro_LISP/blob/main/Livro/Livro_LISP_Free.pdf. Acesso em: 03 out. 2024.
Referência gerada com auxílio da plataforma MORE.
[Keywords: ceiling, double, float, floor, round, truncate] // for [index|filter]ing purposes