Python Language Divisione


Esempio

Python esegue la divisione integer quando entrambi gli operandi sono numeri interi. Il comportamento degli operatori di divisione di Python è cambiato da Python 2.xe 3.x (vedere anche Divisione Integer ).

a, b, c, d, e = 3, 2, 2.0, -3, 10
Python 2.x 2.7

In Python 2 il risultato dell'operatore '/' dipende dal tipo di numeratore e denominatore.

a / b                  # = 1 

a / c                  # = 1.5

d / b                  # = -2

b / a                  # = 0

d / e                  # = -1

Si noti che poiché sia a che b sono int s, il risultato è un int .

Il risultato è sempre arrotondato per difetto (pavimentato).

Poiché c è un float, il risultato di a / c è un float .

Puoi anche usare il modulo operatore:

import operator        # the operator module provides 2-argument arithmetic functions
operator.div(a, b)     # = 1
operator.__div__(a, b) # = 1
Python 2.x 2.2

Cosa succede se si desidera la divisione float:

Consigliato:

from __future__ import division # applies Python 3 style division to the entire module
a / b                  # = 1.5 
a // b                 # = 1

Va bene (se non si desidera applicare all'intero modulo):

a / (b * 1.0)          # = 1.5
1.0 * a / b            # = 1.5
a / b * 1.0            # = 1.0    (careful with order of operations)

from operator import truediv
truediv(a, b)          # = 1.5

Non raccomandato (può sollevare l'errore TypeError, ad es. Se l'argomento è complesso):

float(a) / b           # = 1.5
a / float(b)           # = 1.5
Python 2.x 2.2

L'operatore '//' in Python 2 forza la divisione a pavimento indipendentemente dal tipo.

a // b                # = 1
a // c                # = 1.0
Python 3.x 3.0

In Python 3 l'operatore / esegue la divisione "true" indipendentemente dai tipi. L'operatore // esegue la divisione di piano e mantiene il tipo.

a / b                  # = 1.5 
e / b                  # = 5.0
a // b                 # = 1
a // c                 # = 1.0

import operator            # the operator module provides 2-argument arithmetic functions
operator.truediv(a, b)     # = 1.5
operator.floordiv(a, b)    # = 1
operator.floordiv(a, c)    # = 1.0

Combinazioni possibili (tipi predefiniti):

  • int e int (fornisce un int in Python 2 e un float in Python 3)
  • int e float (dà un float )
  • int e complex (dà un complex )
  • float e float (dà un float )
  • float e complex (dà un complex )
  • complex e complex (dà un complex )

Vedere PEP 238 per ulteriori informazioni.