2012-05-26 17 views

risposta

63

In Python 2, 25/100 è zero quando si esegue una divisione di interi. poiché il risultato è inferiore a 1.

È possibile "risolvere" questo aggiungendo from __future__ import division allo script. Questo comporterà sempre una divisione flottante quando si utilizza l'operatore / e si utilizza // per la divisione intero.

Un'altra opzione renderebbe almeno uno degli operandi un float, ad es. 25.0/100.

In Python 3, 25/100 è sempre 0.25.

1

25/100 è un calcolo intero che arrotonda (per troncamento) a 0.

+2

Leggera nitpicking, non è tanto arrotondare quanto troncare. – Levon

+0

@Levon Questa è una forma di arrotondamento, ma sì. – Marcin

10

Questo è un problema del numero intero troncato (vale a dire, le parti frazionarie di un numero vengono scartate). Quindi:

25/1000

Tuttavia, fintanto che almeno una degli operandi della divisione è un galleggiante, si otterrà un risultato float:

25/100.0 o 25.0/100 o 25.0/100.0 tutti danno 0.25

+0

Come si farebbe nel caso in cui i numeri siano memorizzati in una variabile? Ad esempio x/y, dove x = 4 ey = 3. Oppure x = someObject.size. – altabq

+4

Un modo per farlo è moltiplicare uno dei numeri per 1,0. Ad esempio, '1.0 * x/2' o si potrebbe fare' float (x)/2' - ci potrebbero essere altri modi, ma questi mi vengono in mente in cima alla mia testa. È sempre possibile verificare in modo interattivo i risultati prima di codificarli in un programma. Spero possa aiutare. – Levon

+0

Sì, grazie per la risposta! – altabq

Problemi correlati