Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0
Isso é pretendido? Lembro-me fortemente de versões anteriores voltando int/int=int
? O que devo fazer, existe um novo operador de divisão ou devo sempre transmitir?
python
integer
python-3.x
division
Jonas Byström
fonte
fonte
Respostas:
Dê uma olhada no PEP-238 : Mudando o operador da divisão
fonte
/
ser um "erro" suficiente no design da linguagem que precisava ser corrigido no Python 3. Pode ter sido uma decisão controversa, mas muita gente achou que era a correta. Conte-me no grupo que ama a mudança. É bom que todos concordemos em discordar. Felicidades. :)Ops, encontrado imediatamente
2//2
.fonte
Espero que ajude alguém instantaneamente.
Comportamento do Operador de Divisão no Python 2.7 e Python 3
para obter o resultado em múltiplo duplo 1,0 para "dividendo ou divisor"
fonte
A resposta aceita já menciona o PEP 238 . Eu só quero adicionar uma rápida olhada nos bastidores para os interessados no que está acontecendo sem ler todo o PEP.
Python mapeia operadores como
+
,-
,*
e/
para funções especiais, de tal modo que por exemplo,a + b
é equivalente aEm relação à divisão no Python 2, há por padrão apenas
/
quais mapas são mapeados__div__
e o resultado depende dos tipos de entrada (por exemploint
,float
).O Python 2.2 introduziu o
__future__
recursodivision
, que alterou a semântica da divisão da seguinte maneira (TL; DR do PEP 238):/
mapas para os__truediv__
quais "deve retornar uma aproximação razoável do resultado matemático da divisão" (citação do PEP 238)//
mapas para__floordiv__
, que devem retornar o resultado do/
Com o Python 3.0, as alterações do PEP 238 se tornaram o comportamento padrão e não há mais método especial
__div__
no modelo de objeto do Python.Se você deseja usar o mesmo código no Python 2 e Python 3, use
e mantenha a semântica do PEP 238 de
/
e//
.fonte
De acordo com a documentação do Python3, o python, quando dividido por número inteiro, gerará float, apesar do esperado como número inteiro.
Para imprimir exclusivamente números inteiros, use
floor division method
. A divisão do piso está arredondando o zero e removendo o ponto decimal.Represented by //
Portanto, em vez de 2/2, use
2//2
Você também pode importar a divisão
__future__
independentemente de usar python2 ou python3.Espero que ajude!
fonte