2008-09-22 8 views

Respuesta

102

hay tres opciones:

>>> 4/float(100) 
0.04 
>>> 4/100.0 
0.04 

que es el mismo comportamiento que el C, C++, Java, etc., o

>>> from __future__ import division 
>>> 4/100 
0.04 

también puede activar este comportamiento al pasar el argumento -Qnew al intérprete de Python:

$ python -Qnew 
>>> 4/100 
0.04 

La segunda opción será la predeterminada en Python 3.0. Si desea tener la división de enteros anterior, debe usar el operador //.

Editar sección: sección añadida sobre -Qnew, gracias a ΤΖΩΤΖΙΟΥ!

+1

Por favor, añada también la disponibilidad de 'python -Q new' opción de línea de comandos para que tu respuesta sea más completa. – tzot

+0

Esto proporciona un valor de coma flotante, no un valor decimal. Ver la respuesta de Glyph. – Jim

+0

También puede usar 'from __future__ import division' en el código fuente. –

1

Trate 4,0/100

1

Una ruta sencilla 4/100,0

o

4,0/100

3

Usted necesita decirle a Python para utilizar valores de coma flotante, y no enteros. Usted puede hacer eso simplemente utilizando un punto decimal a sí mismo en las entradas:

>>> 4/100.0 
0.040000000000000001 
7

Hacer uno o ambos de los términos de un número de coma flotante, así:

4.0/100.0 

Alternativamente, activar la función que será por defecto en Python 3.0, 'verdadera división', que hace lo que quiere . En la parte superior de su módulo o secuencia de comandos, haga:

from __future__ import division 
0

Usted no puede obtener un valor decimal al dividir un número entero con otro, se le Allways obtener un número entero de esa manera (como resultado truncan a enteros). Necesita al menos un valor para ser un número decimal.

+0

Tenga en cuenta que este ya no será el caso en Python 3.0 si usa /. –

23

Otras respuestas sugieren cómo obtener un valor de coma flotante. Si bien esto wlil estar cerca de lo que quiere, no va a ser exactos:

>>> 0.4/100. 
0.0040000000000000001 

Si realmente desea un valor decimal , haga lo siguiente:

>>> import decimal 
>>> decimal.Decimal('4')/decimal.Decimal('100') 
Decimal("0.04") 

qué le dará un objeto que sepa correctamente que 4/100 en base 10 es "0.04". Los números de coma flotante están realmente en la base 2, es decir, binarios, no decimales.

3

Es posible que desee mirar el paquete decimal de Python, también. Esto proporcionará buenos resultados decimales.

>>> decimal.Decimal('4')/100 
Decimal("0.04") 
-4

Por favor considere siguiente ejemplo

float tot=(float)31/7; 
+3

... esto ni siquiera es Python. – Moira

1

Aquí tenemos dos casos posibles se indican a continuación

from __future__ import division 

print(4/100) 
print(4//100) 
+0

para python3 no necesita esa línea de división de importación solo use declaraciones de impresión para python2 necesita agregar explícitamente la instrucción de importación –

-3

división de importación de la biblioteca futuro como esto:

+1

Agregue detalles de por qué esto solucionaría el problema original, y quizás qué desventajas tiene este enfoque. – Murphy

+0

El operador de división @Murphy no está preinstalado en la versión anterior de python. no es necesario importar la división cuando se utiliza la versión 3.4.3.5 o 3.6 –

+0

El operador de división @Murphy no está preinstalado en la versión anterior de python. no es necesario importar la división cuando se utiliza la versión 3.4.3.5 o 3.6 –

Cuestiones relacionadas