Pergunta

Estou enfrentando o problema enquanto dividiu

my max_sum = 14
total_no=4  

Então, quando eu faço

print "x :", (total_sum/total_no)

, Eu recebo 3 e não 3.5

Tentei muitas maneiras de imprimir, mas falhei, alguém pode me informar de que maneira eu recebo no formato 3.5?

obrigada

Foi útil?

Solução

No Python 2.x, dividindo dois números inteiros por padrão mergulhe outro número inteiro. Isso geralmente é confuso e foi corrigido no Python 3.x. Você pode ignorá -lo lançando um dos números para um flutuador, que lançará automaticamente o outro:

float( 14 ) / 4 == 3.5

O PEP relevante é Número 238:

O operador da divisão atual (/) tem um significado ambíguo para argumentos numéricos: retorna o piso do resultado matemático da divisão se os argumentos forem ints ou longos, mas retorna uma aproximação razoável do resultado da divisão se os argumentos forem carros alegóricos ou complexos . Isso faz com que as expressões esperem flutuação ou resultados complexos propensos a erros quando os números inteiros não são esperados, mas possíveis como entradas.

Não foi alterado no Python 2.x por causa de problemas graves de compatibilidade com antecedência, mas foi uma das principais mudanças no Python 3.x. Você pode forçar a nova divisão com a linha

from __future__ import division

no topo do seu script python. Isto é um __future__-importar - É usado para forçar alterações de sintaxe que, de outra forma, podem quebrar seu script. Existem muitos outros __future__ importações; Eles geralmente são uma boa idéia a se preparar para uma mudança para o Python 3.x.

Observe que o // Operador sempre significa divisão inteira; Se você realmente quer esse comportamento, deve usá -lo em preferência a /. Lembre -se de "explícito é melhor que implícito"!

Outras dicas

Você está dividindo dois números inteiros, o resultado também será um número inteiro, em Python 2. Tente fazer de um de seus operandos um flutuador, como max_sum = 14.0 ou total_no = 4.0 Para obter um resultado de flutuação.

Se você quiser python 2.x se comportar um pouco mais intuitivo nesse assunto, você pode adicionar

from __future__ import division

no topo do seu script. No Python 3, a divisão funciona como você esperava no seu caso.

faça max_sum = 14.0 ou total_no = 4.0

Você está fazendo uma operação inteira para obter o resultado inteiro mais próximo: 3.

Você deve ser lançado explicitamente/implicitamente max_sum ou total flutuar.

Outra maneira de fazer isso seria importar a divisão do Python 3:

>>> from __future__ import division
>>> max_sum = 14
>>> total_no = 4
>>> print max_sum / total_no  # the way you want it
3.5
>>> print max_sum // total_no
3
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top