Recentemente, notei que int()
arredonda um flutuador em direção a 0, enquanto a divisão inteira arredonda um flutuador em direção ao seu piso.
por exemplo:
-7 // 2 = -4
int(-7/2) = -3
Eu li a documentação que especifica:
classe int (x, base = 10)
Retorne um objeto inteiro construído a partir de um número ou string x ou retorne 0 se nenhum argumento for fornecido. Se x é um número, retorne x. int (). Para números de ponto flutuante, isso é truncado para zero.
e:
divisão de piso
Divisão matemática que arredonda para baixo para o número inteiro mais próximo. O operador da divisão de piso é //. Por exemplo, a expressão 11 // 4 é avaliada como 2 em contraste com os 2,75 retornados pela divisão verdadeira float. Observe que (-11) // 4 é -3 porque é -2,75 arredondado para baixo. Ver PEP 238.
Mas parece ilógico para mim que 2 operações semelhantes (divisão de flutuação para inteiro) devam retornar resultados diferentes.
Existe alguma motivação para as diferenças entre as funções?
Obrigado.